Re: [PATCH] nfsd: Use correct error code when decoding extents
From: Chuck Lever
Date: Wed Jun 11 2025 - 12:30:21 EST
On 6/11/25 12:24 PM, Sergey Bashirov wrote:
> I also have some doubts about this code:
> if (xdr_stream_decode_u64(&xdr, &bex.len))
> return -NFS4ERR_BADXDR;
> if (bex.len & (block_size - 1))
> return -NFS4ERR_BADXDR;
>
> The first error code is clear to me, it is all about decoding. But should
> not we return -NFS4ERR_EINVAL in the second check? On one hand, we
> encountered an invalid value after successful decoding, but on the other
> hand, we stopped decoding the extent array, so we can say that this is
> also a decoding error.
On first read of Section 2.3 of RFC 5663, there's no mandated alignment
requirement for bex_length. IMO this is a case where the implementation
is deciding that a decoded value is not valid, so NFS4ERR_INVAL might be
a better choice here.
--
Chuck Lever