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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 3 Mar 2013 22:03:37 +0000 (06:03 +0800)
commitcc5e7bc758e2d0e06d2b21ca0fd13144210735e5
tree82a6a1f04014c729c0c58135d298b020163be0bb
parentd7bfb00023c660210c3fa106b444e422bce1ed5e
svcrpc: make svc_age_temp_xprts enqueue under sv_lock

commit e75bafbff2270993926abcc31358361db74a9bc2 upstream.

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.)

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/sunrpc/svc_xprt.c