summaryrefslogtreecommitdiff
path: root/COPYING
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2007-02-07 11:10:26 +1100
committerGreg Kroah-Hartman <gregkh@suse.de>2007-02-23 16:24:27 -0800
commita805446f1f5152d55fe31043b364ad3e79c63b0a (patch)
tree13bf0f6803a6a3eb201fa65262e63d3e80b5fc03 /COPYING
parent76d21f587d66f8508f6448c7253e46ff1881bec9 (diff)
knfsd: Fix a race in closing NFSd connections.
If you lose this race, it can iput a socket inode twice and you get a BUG in fs/inode.c When I added the option for user-space to close a socket, I added some cruft to svc_delete_socket so that I could call that function when closing a socket per user-space request. This was the wrong thing to do. I should have just set SK_CLOSE and let normal mechanisms do the work. Not only wrong, but buggy. The locking is all wrong and it openned up a race where-by a socket could be closed twice. So this patch: Introduces svc_close_socket which sets SK_CLOSE then either leave the close up to a thread, or calls svc_delete_socket if it can get SK_BUSY. Adds a bias to sk_busy which is removed when SK_DEAD is set, This avoid races around shutting down the socket. Changes several 'spin_lock' to 'spin_lock_bh' where the _bh was missing. Bugzilla-url: http://bugzilla.kernel.org/show_bug.cgi?id=7916 Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'COPYING')
0 files changed, 0 insertions, 0 deletions