summaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorBenny Halevy <bhalevy@panasas.com>2008-12-23 16:06:13 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-12-23 16:06:13 -0500
commitaadf61521199e5c0b2976002213819cafa41b897 (patch)
tree65cf6521934b7aed16b0b832e45f85ec560100d5 /fs/nfs
parentc977a2ef40a38c45537ad03823d0a004f06373f0 (diff)
downloadlinux-aadf61521199e5c0b2976002213819cafa41b897.tar.gz
linux-aadf61521199e5c0b2976002213819cafa41b897.tar.bz2
linux-aadf61521199e5c0b2976002213819cafa41b897.zip
nfs: return compound hdr.status when there are no op replies
When there are no op replies encoded in the compound reply hdr.status still contains the overall status of the compound rpc. This can happen, e.g., when the server returns a NFS4ERR_MINOR_VERS_MISMATCH error. Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/nfs4xdr.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index d8ddfc5467d6..3f18a266a491 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -2222,6 +2222,8 @@ static int decode_compound_hdr(struct xdr_stream *xdr, struct compound_hdr *hdr)
hdr->tag = (char *)p;
p += XDR_QUADLEN(hdr->taglen);
READ32(hdr->nops);
+ if (unlikely(hdr->nops < 1))
+ return nfs4_stat_to_errno(hdr->status);
return 0;
}