diff options
author | Benny Halevy <bhalevy@panasas.com> | 2008-12-23 16:06:13 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-12-23 16:06:13 -0500 |
commit | aadf61521199e5c0b2976002213819cafa41b897 (patch) | |
tree | 65cf6521934b7aed16b0b832e45f85ec560100d5 | |
parent | c977a2ef40a38c45537ad03823d0a004f06373f0 (diff) | |
download | op-kernel-dev-aadf61521199e5c0b2976002213819cafa41b897.zip op-kernel-dev-aadf61521199e5c0b2976002213819cafa41b897.tar.gz |
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>
-rw-r--r-- | fs/nfs/nfs4xdr.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index d8ddfc5..3f18a26 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; } |