• Chuck Lever's avatar
    NFSD: Fix ia_size underflow · e6faac3f
    Chuck Lever authored
    iattr::ia_size is a loff_t, which is a signed 64-bit type. NFSv3 and
    NFSv4 both define file size as an unsigned 64-bit type. Thus there
    is a range of valid file size values an NFS client can send that is
    already larger than Linux can handle.
    
    Currently decode_fattr4() dumps a full u64 value into ia_size. If
    that value happens to be larger than S64_MAX, then ia_size
    underflows. I'm about to fix up the NFSv3 behavior as well, so let's
    catch the underflow in the common code path: nfsd_setattr().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    e6faac3f
vfs.c 58.2 KB