diff options
Diffstat (limited to 'fs/lockd/clntlock.c')
-rw-r--r-- | fs/lockd/clntlock.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/lockd/clntlock.c b/fs/lockd/clntlock.c index da6354baa0b8..8ae79ae4b998 100644 --- a/fs/lockd/clntlock.c +++ b/fs/lockd/clntlock.c | |||
@@ -125,7 +125,15 @@ u32 nlmclnt_grant(const struct sockaddr_in *addr, const struct nlm_lock *lock) | |||
125 | list_for_each_entry(block, &nlm_blocked, b_list) { | 125 | list_for_each_entry(block, &nlm_blocked, b_list) { |
126 | struct file_lock *fl_blocked = block->b_lock; | 126 | struct file_lock *fl_blocked = block->b_lock; |
127 | 127 | ||
128 | if (!nlm_compare_locks(fl_blocked, fl)) | 128 | if (fl_blocked->fl_start != fl->fl_start) |
129 | continue; | ||
130 | if (fl_blocked->fl_end != fl->fl_end) | ||
131 | continue; | ||
132 | /* | ||
133 | * Careful! The NLM server will return the 32-bit "pid" that | ||
134 | * we put on the wire: in this case the lockowner "pid". | ||
135 | */ | ||
136 | if (fl_blocked->fl_u.nfs_fl.owner->pid != lock->svid) | ||
129 | continue; | 137 | continue; |
130 | if (!nlm_cmp_addr(&block->b_host->h_addr, addr)) | 138 | if (!nlm_cmp_addr(&block->b_host->h_addr, addr)) |
131 | continue; | 139 | continue; |