svcrpc: make svc_age_temp_xprts enqueue under sv_lock
authorJ. Bruce Fields <bfields@redhat.com>
Sun, 10 Feb 2013 16:33:48 +0000 (11:33 -0500)
committerJ. Bruce Fields <bfields@redhat.com>
Sun, 17 Feb 2013 15:53:16 +0000 (10:53 -0500)
commite75bafbff2270993926abcc31358361db74a9bc2
tree2a59f30307bfa469aab049f9b804107f679460b6
parentf25cc71e634edcf8a15bc60a48f2b5f3ec9fbb1d
svcrpc: make svc_age_temp_xprts enqueue under sv_lock

svc_age_temp_xprts expires xprts in a two-step process: first it takes
the sv_lock and moves the xprts to expire off their server-wide list
(sv_tempsocks or sv_permsocks) to a local list.  Then it drops the
sv_lock and enqueues and puts each one.

I see no reason for this: svc_xprt_enqueue() will take sp_lock, but the
sv_lock and sp_lock are not otherwise nested anywhere (and documentation
at the top of this file claims it's correct to nest these with sp_lock
inside.)

Cc: stable@kernel.org
Tested-by: Jason Tibbitts <tibbs@math.uh.edu>
Tested-by: Paweł Sikora <pawel.sikora@agmk.net>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/svc_xprt.c