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 | } |
