Commit 7a1fa065 authored by Neil Brown's avatar Neil Brown Committed by Linus Torvalds

Correctly close old nfsd/lockd sockets.

Commit aaf68cfb added a bias
to sk_inuse, so this test for an unused socket now fails.  So no
sockets get closed because they are old (they might get closed
if the client closed them).

This bug has existed since 2.6.21-rc1.

Thanks to Wolfgang Walter for finding and reporting the bug.

Cc: Wolfgang Walter <wolfgang.walter@studentenwerk.mhn.de>
Signed-off-by: default avatarNeil Brown <neilb@suse.de>
Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 2123a09f
...@@ -1592,7 +1592,7 @@ svc_age_temp_sockets(unsigned long closure) ...@@ -1592,7 +1592,7 @@ svc_age_temp_sockets(unsigned long closure)
if (!test_and_set_bit(SK_OLD, &svsk->sk_flags)) if (!test_and_set_bit(SK_OLD, &svsk->sk_flags))
continue; continue;
if (atomic_read(&svsk->sk_inuse) || test_bit(SK_BUSY, &svsk->sk_flags)) if (atomic_read(&svsk->sk_inuse) > 1 || test_bit(SK_BUSY, &svsk->sk_flags))
continue; continue;
atomic_inc(&svsk->sk_inuse); atomic_inc(&svsk->sk_inuse);
list_move(le, &to_be_aged); list_move(le, &to_be_aged);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment