Răsfoiți Sursa

[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>
Fred Isaman 19 ani în urmă
părinte
comite
34081efc12
1 a modificat fișierele cu 3 adăugiri și 2 ștergeri
  1. 3 2
      fs/nfsd/nfs4xdr.c

+ 3 - 2
fs/nfsd/nfs4xdr.c

@@ -1764,10 +1764,11 @@ nfsd4_encode_dirent(struct readdir_cd *ccd, const char *name, int namlen,
 		 */
 		 */
 		if (!(cd->rd_bmval[0] & FATTR4_WORD0_RDATTR_ERROR))
 		if (!(cd->rd_bmval[0] & FATTR4_WORD0_RDATTR_ERROR))
 			goto fail;
 			goto fail;
-		nfserr = nfserr_toosmall;
 		p = nfsd4_encode_rdattr_error(p, buflen, nfserr);
 		p = nfsd4_encode_rdattr_error(p, buflen, nfserr);
-		if (p == NULL)
+		if (p == NULL) {
+			nfserr = nfserr_toosmall;
 			goto fail;
 			goto fail;
+		}
 	}
 	}
 	cd->buflen -= (p - cd->buffer);
 	cd->buflen -= (p - cd->buffer);
 	cd->buffer = p;
 	cd->buffer = p;