X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=fs%2Flockd%2Fsvclock.c;h=e066a3902973640ae3d75dc0c768ceb8f15eb9d8;hb=5b2941b18dc5f60a5c14a5c15693f9c58b0dd922;hp=067778b0ccc9dddd878277d6ca88e9c5d2fddc5b;hpb=18fb38e2f58ff7a66e30cbb71af81425edf1c9a1;p=~andy%2Flinux diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index 067778b0ccc..e066a390297 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c @@ -951,6 +951,7 @@ nlmsvc_retry_blocked(void) unsigned long timeout = MAX_SCHEDULE_TIMEOUT; struct nlm_block *block; + spin_lock(&nlm_blocked_lock); while (!list_empty(&nlm_blocked) && !kthread_should_stop()) { block = list_entry(nlm_blocked.next, struct nlm_block, b_list); @@ -960,6 +961,7 @@ nlmsvc_retry_blocked(void) timeout = block->b_when - jiffies; break; } + spin_unlock(&nlm_blocked_lock); dprintk("nlmsvc_retry_blocked(%p, when=%ld)\n", block, block->b_when); @@ -969,7 +971,9 @@ nlmsvc_retry_blocked(void) retry_deferred_block(block); } else nlmsvc_grant_blocked(block); + spin_lock(&nlm_blocked_lock); } + spin_unlock(&nlm_blocked_lock); return timeout; }