summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKinglong Mee2014-06-13 11:32:42 +0200
committerJ. Bruce Fields2014-06-17 22:42:48 +0200
commitf41c5ad2ff2657978a9712b9ea80cd812a7da2b0 (patch)
treef717adf1cef517c6a6fef4b1a321b5cea82d38b8
parentNFSD: Don't hand out delegations for 30 seconds after recalling them. (diff)
downloadkernel-qcow2-linux-f41c5ad2ff2657978a9712b9ea80cd812a7da2b0.tar.gz
kernel-qcow2-linux-f41c5ad2ff2657978a9712b9ea80cd812a7da2b0.tar.xz
kernel-qcow2-linux-f41c5ad2ff2657978a9712b9ea80cd812a7da2b0.zip
NFSD: fix bug for readdir of pseudofs
Commit 561f0ed498ca (nfsd4: allow large readdirs) introduces a bug about readdir the root of pseudofs. Call xdr_truncate_encode() revert encoded name when skipping. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
-rw-r--r--fs/nfsd/nfs4xdr.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index 2d305a121f37..83baf2bfe9e9 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -2687,6 +2687,7 @@ nfsd4_encode_dirent(void *ccdv, const char *name, int namlen,
nfserr = nfserr_toosmall;
goto fail;
case nfserr_noent:
+ xdr_truncate_encode(xdr, start_offset);
goto skip_entry;
default:
/*