diff options
Diffstat (limited to 'fs/nfs/nfs4xdr.c')
| -rw-r--r-- | fs/nfs/nfs4xdr.c | 9 | 
1 files changed, 3 insertions, 6 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index 2ab8e5cb8f5..4e2c168b6ee 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -6086,11 +6086,11 @@ int nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,  	__be32 *p = xdr_inline_decode(xdr, 4);  	if (unlikely(!p))  		goto out_overflow; -	if (!ntohl(*p++)) { +	if (*p == xdr_zero) {  		p = xdr_inline_decode(xdr, 4);  		if (unlikely(!p))  			goto out_overflow; -		if (!ntohl(*p++)) +		if (*p == xdr_zero)  			return -EAGAIN;  		entry->eof = 1;  		return -EBADCOOKIE; @@ -6101,7 +6101,7 @@ int nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,  		goto out_overflow;  	entry->prev_cookie = entry->cookie;  	p = xdr_decode_hyper(p, &entry->cookie); -	entry->len = ntohl(*p++); +	entry->len = be32_to_cpup(p);  	p = xdr_inline_decode(xdr, entry->len);  	if (unlikely(!p)) @@ -6132,9 +6132,6 @@ int nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,  	if (entry->fattr->valid & NFS_ATTR_FATTR_TYPE)  		entry->d_type = nfs_umode_to_dtype(entry->fattr->mode); -	if (verify_attr_len(xdr, p, len) < 0) -		goto out_overflow; -  	return 0;  out_overflow:  |