diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-11 18:45:17 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-11 18:45:17 -0400 |
| commit | 18770c7c3a0ccd60017ac76b5d2e7d1f71376b94 (patch) | |
| tree | 548e113ab83307d25e41ea1e67ace6f53b194798 | |
| parent | 6b98cd5aad3bb51a3b5b51ba670ab8d5fe1cc487 (diff) | |
| parent | 23fcf2ec93fb8573a653408316af599939ff9a8e (diff) | |
Merge branch 'for-2.6.39' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.39' of git://linux-nfs.org/~bfields/linux:
nfsd4: fix oops on lock failure
nfsd: fix auth_domain reference leak on nlm operations
| -rw-r--r-- | fs/nfsd/lockd.c | 1 | ||||
| -rw-r--r-- | fs/nfsd/nfs4state.c | 9 |
2 files changed, 6 insertions, 4 deletions
diff --git a/fs/nfsd/lockd.c b/fs/nfsd/lockd.c index 0c6d81670137..7c831a2731fa 100644 --- a/fs/nfsd/lockd.c +++ b/fs/nfsd/lockd.c | |||
| @@ -38,7 +38,6 @@ nlm_fopen(struct svc_rqst *rqstp, struct nfs_fh *f, struct file **filp) | |||
| 38 | exp_readlock(); | 38 | exp_readlock(); |
| 39 | nfserr = nfsd_open(rqstp, &fh, S_IFREG, NFSD_MAY_LOCK, filp); | 39 | nfserr = nfsd_open(rqstp, &fh, S_IFREG, NFSD_MAY_LOCK, filp); |
| 40 | fh_put(&fh); | 40 | fh_put(&fh); |
| 41 | rqstp->rq_client = NULL; | ||
| 42 | exp_readunlock(); | 41 | exp_readunlock(); |
| 43 | /* We return nlm error codes as nlm doesn't know | 42 | /* We return nlm error codes as nlm doesn't know |
| 44 | * about nfsd, but nfsd does know about nlm.. | 43 | * about nfsd, but nfsd does know about nlm.. |
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 4b36ec3eb8ea..aa309aa93fe8 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
| @@ -397,10 +397,13 @@ static void unhash_generic_stateid(struct nfs4_stateid *stp) | |||
| 397 | 397 | ||
| 398 | static void free_generic_stateid(struct nfs4_stateid *stp) | 398 | static void free_generic_stateid(struct nfs4_stateid *stp) |
| 399 | { | 399 | { |
| 400 | int oflag = nfs4_access_bmap_to_omode(stp); | 400 | int oflag; |
| 401 | 401 | ||
| 402 | nfs4_file_put_access(stp->st_file, oflag); | 402 | if (stp->st_access_bmap) { |
| 403 | put_nfs4_file(stp->st_file); | 403 | oflag = nfs4_access_bmap_to_omode(stp); |
| 404 | nfs4_file_put_access(stp->st_file, oflag); | ||
| 405 | put_nfs4_file(stp->st_file); | ||
| 406 | } | ||
| 404 | kmem_cache_free(stateid_slab, stp); | 407 | kmem_cache_free(stateid_slab, stp); |
| 405 | } | 408 | } |
| 406 | 409 | ||
