NFSD: Fix NFSv3 SETATTR/CREATE's handling of large file sizes
authorChuck Lever <chuck.lever@oracle.com>
Tue, 25 Jan 2022 20:59:57 +0000 (15:59 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 16 Feb 2022 11:56:06 +0000 (12:56 +0100)
commit37f2d2cd8eadddbbd9c7bda327a9393399b2f89b
treebaf3cb550c33379da00c93132d32fad5cb4884ee
parent535e301ea677a37459577466f25cda2a7e8d3af1
NFSD: Fix NFSv3 SETATTR/CREATE's handling of large file sizes

commit a648fdeb7c0e17177a2280344d015dba3fbe3314 upstream.

iattr::ia_size is a loff_t, so these NFSv3 procedures must be
careful to deal with incoming client size values that are larger
than s64_max without corrupting the value.

Silently capping the value results in storing a different value
than the client passed in which is unexpected behavior, so remove
the min_t() check in decode_sattr3().

Note that RFC 1813 permits only the WRITE procedure to return
NFS3ERR_FBIG. We believe that NFSv3 reference implementations
also return NFS3ERR_FBIG when ia_size is too large.

Cc: stable@vger.kernel.org
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfsd/nfs3xdr.c