diff options
author | Fred Isaman <iisaman@citi.umich.edu> | 2006-01-18 20:43:40 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-18 22:20:27 -0500 |
commit | 34081efc12aaaa12f20e5b59f3cb98ba6e27fb34 (patch) | |
tree | d3aaba6619f0fc3b5ad5d3bd1868bf196bb5d40c /fs/nfsd/nfs4xdr.c | |
parent | 6c26d08f02f829a833d393c3f1b196538a9ec2c4 (diff) |
[PATCH] nfsd4: Fix bug in rdattr_error return
Fix bug in rdattr_error return which causes correct error code to be
overwritten by nfserr_toosmall.
Signed-off-by: Fred Isaman <iisaman@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r-- | fs/nfsd/nfs4xdr.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 6b743327686c..69d3501173a8 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c | |||
@@ -1764,10 +1764,11 @@ nfsd4_encode_dirent(struct readdir_cd *ccd, const char *name, int namlen, | |||
1764 | */ | 1764 | */ |
1765 | if (!(cd->rd_bmval[0] & FATTR4_WORD0_RDATTR_ERROR)) | 1765 | if (!(cd->rd_bmval[0] & FATTR4_WORD0_RDATTR_ERROR)) |
1766 | goto fail; | 1766 | goto fail; |
1767 | nfserr = nfserr_toosmall; | ||
1768 | p = nfsd4_encode_rdattr_error(p, buflen, nfserr); | 1767 | p = nfsd4_encode_rdattr_error(p, buflen, nfserr); |
1769 | if (p == NULL) | 1768 | if (p == NULL) { |
1769 | nfserr = nfserr_toosmall; | ||
1770 | goto fail; | 1770 | goto fail; |
1771 | } | ||
1771 | } | 1772 | } |
1772 | cd->buflen -= (p - cd->buffer); | 1773 | cd->buflen -= (p - cd->buffer); |
1773 | cd->buffer = p; | 1774 | cd->buffer = p; |