diff options
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r-- | fs/nfs/nfs4proc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index ff378126ccd7..9c1da34036aa 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -212,6 +212,7 @@ static void update_open_stateid(struct nfs4_state *state, nfs4_stateid *stateid, | |||
212 | 212 | ||
213 | open_flags &= (FMODE_READ|FMODE_WRITE); | 213 | open_flags &= (FMODE_READ|FMODE_WRITE); |
214 | /* Protect against nfs4_find_state() */ | 214 | /* Protect against nfs4_find_state() */ |
215 | spin_lock(&state->owner->so_lock); | ||
215 | spin_lock(&inode->i_lock); | 216 | spin_lock(&inode->i_lock); |
216 | state->state |= open_flags; | 217 | state->state |= open_flags; |
217 | /* NB! List reordering - see the reclaim code for why. */ | 218 | /* NB! List reordering - see the reclaim code for why. */ |
@@ -221,6 +222,7 @@ static void update_open_stateid(struct nfs4_state *state, nfs4_stateid *stateid, | |||
221 | state->nreaders++; | 222 | state->nreaders++; |
222 | memcpy(&state->stateid, stateid, sizeof(state->stateid)); | 223 | memcpy(&state->stateid, stateid, sizeof(state->stateid)); |
223 | spin_unlock(&inode->i_lock); | 224 | spin_unlock(&inode->i_lock); |
225 | spin_unlock(&state->owner->so_lock); | ||
224 | } | 226 | } |
225 | 227 | ||
226 | /* | 228 | /* |
@@ -2357,7 +2359,7 @@ static inline ssize_t nfs4_get_acl_uncached(struct inode *inode, void *buf, size | |||
2357 | return -ENOMEM; | 2359 | return -ENOMEM; |
2358 | args.acl_pages[0] = localpage; | 2360 | args.acl_pages[0] = localpage; |
2359 | args.acl_pgbase = 0; | 2361 | args.acl_pgbase = 0; |
2360 | args.acl_len = PAGE_SIZE; | 2362 | resp_len = args.acl_len = PAGE_SIZE; |
2361 | } else { | 2363 | } else { |
2362 | resp_buf = buf; | 2364 | resp_buf = buf; |
2363 | buf_to_pages(buf, buflen, args.acl_pages, &args.acl_pgbase); | 2365 | buf_to_pages(buf, buflen, args.acl_pages, &args.acl_pgbase); |