[PATCH 0/2 v4] nfs: return nfs4 compound header status on op header decoding error
Trond Myklebust
trond.myklebust at fys.uio.no
Tue Jul 15 17:57:15 EDT 2008
On Thu, 2008-07-03 at 20:49 +0300, Benny Halevy wrote:
> Trond, following our conversation during the Connectathon
> I reduced this patch as much as possible and restricted the
> use of the compound header status to cases where op_hdr
> decoding hit an error.
>
> This is needed for nfs41 for graceful fallback when trying
> to mount a 4.0 server with 4.1. In this case the server
> returns no ops and the hdr status is set to
> NFS4ERR_MINOR_VERS_MISMATCH.
>
> Please consider these patches:
>
> [PATCH 1/2] nfs: return nfs4 compound header status on op header decoding error
No, this patch doesn't look right either. If we overrun the end of the
reply buffer, then xdr_inline_decode() will return a NULL pointer, so
you should never hit the your (opnum != expected) case.
So given that your concern is primarily the case where nops==0, why
don't you just add that particular case to decode_compound_hdr?
IOW: something like
@@static int decode_compound_hdr(
p += XDR_QUADLEN(hdr->taglen);
READ32(hdr->nops);
+ if (hdr->nops < 1)
+ return nfs4_stat_to_errno(hdr->status);
return 0;
}
More information about the NFSv4
mailing list