Fixes kref in iproute
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 17 Jan 2014 20:45:54 +0000 (12:45 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 17 Jan 2014 20:48:47 +0000 (12:48 -0800)
commite48c49c8c94b07646f49aa9821ea05724cd818b5
tree315d2877884f5e7350abaffeb0cd21b782eedc86
parent8ecc37042256099227cd0b2c7cc0a88a33d1ce69
Fixes kref in iproute

The old style was racy and wouldn't decref if you were over 1.  This is
basically the same as the 9ns code now (TODOs and all).

One thing that may make using a release harder is that the route needs
to know f->queue.  Doing the 'release' work in the if (kref_put()) block
will still work (as far as handling refs and races go).

Definitely sketchy though, so we should look at this later in case we
are losing memory in the routes.
kern/src/net/iproute.c