J. Bruce Fields
71c3bcd713
nfsd4: fix state lock usage in LOCKU
...
In commit 5ec094c1096ab3bb795651855d53f18daa26afde "nfsd4: extend state
lock over seqid replay logic" I modified the exit logic of all the
seqid-based procedures except nfsd4_locku(). Fix the oversight.
The result of the bug was a double-unlock while handling the LOCKU
procedure, and a warning like:
[ 142.150014] WARNING: at kernel/mutex-debug.c:78 debug_mutex_unlock+0xda/0xe0()
...
[ 142.152927] Pid: 742, comm: nfsd Not tainted 3.1.0-rc1-SLIM+ #9
[ 142.152927] Call Trace:
[ 142.152927] [<ffffffff8105fa4f>] warn_slowpath_common+0x7f/0xc0
[ 142.152927] [<ffffffff8105faaa>] warn_slowpath_null+0x1a/0x20
[ 142.152927] [<ffffffff810960ca>] debug_mutex_unlock+0xda/0xe0
[ 142.152927] [<ffffffff813e4200>] __mutex_unlock_slowpath+0x80/0x140
[ 142.152927] [<ffffffff813e42ce>] mutex_unlock+0xe/0x10
[ 142.152927] [<ffffffffa03bd3f5>] nfs4_lock_state+0x35/0x40 [nfsd]
[ 142.152927] [<ffffffffa03b0b71>] nfsd4_proc_compound+0x2a1/0x690
[nfsd]
[ 142.152927] [<ffffffffa039f9fb>] nfsd_dispatch+0xeb/0x230 [nfsd]
[ 142.152927] [<ffffffffa02b1055>] svc_process_common+0x345/0x690
[sunrpc]
[ 142.152927] [<ffffffff81058d10>] ? try_to_wake_up+0x280/0x280
[ 142.152927] [<ffffffffa02b16e2>] svc_process+0x102/0x150 [sunrpc]
[ 142.152927] [<ffffffffa039f0bd>] nfsd+0xbd/0x160 [nfsd]
[ 142.152927] [<ffffffffa039f000>] ? 0xffffffffa039efff
[ 142.152927] [<ffffffff8108230c>] kthread+0x8c/0xa0
[ 142.152927] [<ffffffff813e8694>] kernel_thread_helper+0x4/0x10
[ 142.152927] [<ffffffff81082280>] ? kthread_worker_fn+0x190/0x190
[ 142.152927] [<ffffffff813e8690>] ? gs_change+0x13/0x13
Reported-by: Bryan Schumaker <bjschuma@netapp.com>
Tested-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2011-10-10 18:04:45 -04:00
..
2011-01-04 18:22:10 -05:00
2009-12-15 15:01:47 -05:00
2008-02-01 16:42:05 -05:00
2011-07-18 09:39:01 -04:00
2011-09-13 22:44:10 -04:00
2011-01-04 18:22:11 -05:00
2011-07-15 18:58:42 -04:00
2011-07-15 18:58:42 -04:00
2007-05-09 12:30:54 -07:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2011-04-29 20:47:52 -04:00
2011-05-29 11:21:12 -07:00
2011-01-04 18:22:09 -05:00
2011-09-26 17:35:25 -04:00
2011-03-07 12:05:09 -05:00
2011-09-20 14:45:51 -04:00
2011-08-27 14:21:21 -04:00
2011-10-10 18:04:45 -04:00
2011-09-26 17:35:28 -04:00
2011-07-18 09:39:01 -04:00
2011-08-31 11:50:11 -04:00
2011-09-13 22:44:17 -04:00
2011-08-26 18:22:48 -04:00
2010-10-13 15:48:55 -04:00
2011-01-04 18:22:11 -05:00
2011-07-18 09:39:01 -04:00
2011-03-31 11:26:23 -03:00
2011-09-26 17:35:28 -04:00
2011-05-10 10:16:21 +02:00
2011-09-13 22:44:17 -04:00
2011-08-27 14:20:21 -04:00
2009-12-15 15:01:47 -05:00
2011-09-26 17:35:27 -04:00
2009-12-15 15:01:47 -05:00