diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-17 16:43:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-17 16:43:55 -0400 |
commit | 61f98b0fca802d7e0191072606519e2230a6226d (patch) | |
tree | 2f6d5f85ea21042c0299e6204c9a99f3a7172279 /fs/lockd | |
parent | c0d15cc7ee8c0d1970197d9eb1727503bcdd2471 (diff) | |
parent | b2781e1021525649c0b33fffd005ef219da33926 (diff) |
Merge branch 'for-3.11' of git://linux-nfs.org/~bfields/linux
Pull nfsd bugfixes from Bruce Fields:
"Just three minor bugfixes"
* 'for-3.11' of git://linux-nfs.org/~bfields/linux:
svcrdma: underflow issue in decode_write_list()
nfsd4: fix minorversion support interface
lockd: protect nlm_blocked access in nlmsvc_retry_blocked
Diffstat (limited to 'fs/lockd')
-rw-r--r-- | fs/lockd/svclock.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index 067778b0ccc9..e066a3902973 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c | |||
@@ -951,6 +951,7 @@ nlmsvc_retry_blocked(void) | |||
951 | unsigned long timeout = MAX_SCHEDULE_TIMEOUT; | 951 | unsigned long timeout = MAX_SCHEDULE_TIMEOUT; |
952 | struct nlm_block *block; | 952 | struct nlm_block *block; |
953 | 953 | ||
954 | spin_lock(&nlm_blocked_lock); | ||
954 | while (!list_empty(&nlm_blocked) && !kthread_should_stop()) { | 955 | while (!list_empty(&nlm_blocked) && !kthread_should_stop()) { |
955 | block = list_entry(nlm_blocked.next, struct nlm_block, b_list); | 956 | block = list_entry(nlm_blocked.next, struct nlm_block, b_list); |
956 | 957 | ||
@@ -960,6 +961,7 @@ nlmsvc_retry_blocked(void) | |||
960 | timeout = block->b_when - jiffies; | 961 | timeout = block->b_when - jiffies; |
961 | break; | 962 | break; |
962 | } | 963 | } |
964 | spin_unlock(&nlm_blocked_lock); | ||
963 | 965 | ||
964 | dprintk("nlmsvc_retry_blocked(%p, when=%ld)\n", | 966 | dprintk("nlmsvc_retry_blocked(%p, when=%ld)\n", |
965 | block, block->b_when); | 967 | block, block->b_when); |
@@ -969,7 +971,9 @@ nlmsvc_retry_blocked(void) | |||
969 | retry_deferred_block(block); | 971 | retry_deferred_block(block); |
970 | } else | 972 | } else |
971 | nlmsvc_grant_blocked(block); | 973 | nlmsvc_grant_blocked(block); |
974 | spin_lock(&nlm_blocked_lock); | ||
972 | } | 975 | } |
976 | spin_unlock(&nlm_blocked_lock); | ||
973 | 977 | ||
974 | return timeout; | 978 | return timeout; |
975 | } | 979 | } |