diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c
index 428f72bf356f9d31d8b7c2d1617508f823a92e0b..fbc5d5ca2d700cda60da11a107e0c4600f5922d2 100644
--- a/fs/nfs/nfs2xdr.c
+++ b/fs/nfs/nfs2xdr.c
@@ -434,7 +434,7 @@ nfs_xdr_readdirres(struct rpc_rqst *req, u32 *p, void *dummy)
 			goto short_pkt;
 		entry = p;
 	}
-	if (!nr)
+	if (!nr && (entry[0] != 0 || entry[1] != 1))
 		goto short_pkt;
  out:
 	kunmap(*page);
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
index fcc8a4fbade8f81439c29ac5764c900574d117eb..b5830e2c2614fbe26dd88dabeb88b590483000f2 100644
--- a/fs/nfs/nfs3xdr.c
+++ b/fs/nfs/nfs3xdr.c
@@ -579,7 +579,7 @@ nfs3_xdr_readdirres(struct rpc_rqst *req, u32 *p, struct nfs3_readdirres *res)
 			goto short_pkt;
 		entry = p;
 	}
-	if (!nr)
+	if (!nr && (entry[0] != 0 || entry[1] != 1))
 		goto short_pkt;
  out:
 	kunmap(*page);