diff options
-rw-r--r-- | fs/nfs/nfs2xdr.c | 10 | ||||
-rw-r--r-- | fs/nfs/nfs3xdr.c | 10 |
2 files changed, 4 insertions, 16 deletions
diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c index baf759bccd05..db81166182c9 100644 --- a/fs/nfs/nfs2xdr.c +++ b/fs/nfs/nfs2xdr.c | |||
@@ -978,16 +978,10 @@ static int decode_readdirok(struct xdr_stream *xdr) | |||
978 | pglen = xdr->buf->page_len; | 978 | pglen = xdr->buf->page_len; |
979 | hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base; | 979 | hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base; |
980 | recvd = xdr->buf->len - hdrlen; | 980 | recvd = xdr->buf->len - hdrlen; |
981 | if (unlikely(pglen > recvd)) | 981 | if (pglen > recvd) |
982 | goto out_cheating; | 982 | pglen = recvd; |
983 | out: | ||
984 | xdr_read_pages(xdr, pglen); | 983 | xdr_read_pages(xdr, pglen); |
985 | return pglen; | 984 | return pglen; |
986 | out_cheating: | ||
987 | dprintk("NFS: server cheating in readdir result: " | ||
988 | "pglen %u > recvd %u\n", pglen, recvd); | ||
989 | pglen = recvd; | ||
990 | goto out; | ||
991 | } | 985 | } |
992 | 986 | ||
993 | static int nfs2_xdr_dec_readdirres(struct rpc_rqst *req, | 987 | static int nfs2_xdr_dec_readdirres(struct rpc_rqst *req, |
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c index 902de489ec9b..3c61c7f80a4b 100644 --- a/fs/nfs/nfs3xdr.c +++ b/fs/nfs/nfs3xdr.c | |||
@@ -2045,16 +2045,10 @@ static int decode_dirlist3(struct xdr_stream *xdr) | |||
2045 | pglen = xdr->buf->page_len; | 2045 | pglen = xdr->buf->page_len; |
2046 | hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base; | 2046 | hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base; |
2047 | recvd = xdr->buf->len - hdrlen; | 2047 | recvd = xdr->buf->len - hdrlen; |
2048 | if (unlikely(pglen > recvd)) | 2048 | if (pglen > recvd) |
2049 | goto out_cheating; | 2049 | pglen = recvd; |
2050 | out: | ||
2051 | xdr_read_pages(xdr, pglen); | 2050 | xdr_read_pages(xdr, pglen); |
2052 | return pglen; | 2051 | return pglen; |
2053 | out_cheating: | ||
2054 | dprintk("NFS: server cheating in readdir result: " | ||
2055 | "pglen %u > recvd %u\n", pglen, recvd); | ||
2056 | pglen = recvd; | ||
2057 | goto out; | ||
2058 | } | 2052 | } |
2059 | 2053 | ||
2060 | static int decode_readdir3resok(struct xdr_stream *xdr, | 2054 | static int decode_readdir3resok(struct xdr_stream *xdr, |