Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp4130320pxb; Mon, 1 Feb 2021 13:18:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJzYcWN0CP6m6Hiae4WNkG4Gcdn4SdEHLhrgQubx6eDyB9A+JhDhrgrtz09vbTRfyni/U9cq X-Received: by 2002:a17:906:384c:: with SMTP id w12mr19824369ejc.140.1612214304398; Mon, 01 Feb 2021 13:18:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612214304; cv=none; d=google.com; s=arc-20160816; b=ecBaHQ8LNE22gJJj4v8TfhlLCEe2BVheub/dbyBvl91C0j1QByMSGQKyvDAjZrzD8d td/KE54wmT/7vjl+dzXG4vU0NUfc1zWZVtM1OtIxaCUAcYgOp+wlPZMIKa4t0LyvYY4H WRDvgHFmwOLpbIx1GdN4/2iniubByTbkAM0GBBl4Zf66o1QoZMuJHPSg/g4k7sNLaHzG UrJrFgl0Z/LJWAodg4HZsfVa0/mmKDAplJEMGnhzSCbh9l/GQGfT8Evpw83buqyn7hC1 27kPwQY1Wjl6NiHV/fXyg04SN+Jako4L6jv32lVyDeIbe0DxhULAyCU2oupob3Qqo3S9 aOcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=a3KuyPr6fwh5TuZr7KnScl/s3VOBDsu8OKvMSKnyX+8=; b=KXZKFx/s5vTBXNN7Zx756fS1yt9GHAvJAXPzP7a1yGgfECC4i6Xr7DFmFuLAKKSi/o 0FJLr18D76Ehow5hy9kyUmQAba/PNxTbuzQ/Lbt4tNhTUivj2qIGDk4mH7DP9wj8hZKL o7X2r5kq3f6m42/6W7yNHcR5xp/L+ahER0paasW+ItRTs2fq2sj3YeMVT4/qSYnm+mC4 SlobV7fp/WqxNzT5lsp1fSYY3afih53LQciujcg/qlPYNYxJGyhWG91VF8AgHsaAVzhs jkgoebSW0JnIY1bhBmC80Ka2zynJgVQ06gxrU8POztEFfVszftdMgz8dPdPuBZmhK/mu j2ng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=IM3u8UJy; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m7si5030370ejc.466.2021.02.01.13.17.52; Mon, 01 Feb 2021 13:18:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=IM3u8UJy; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231713AbhBAVP2 (ORCPT + 99 others); Mon, 1 Feb 2021 16:15:28 -0500 Received: from mail.kernel.org ([198.145.29.99]:49598 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229663AbhBAVP1 (ORCPT ); Mon, 1 Feb 2021 16:15:27 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id DADAC64E93; Mon, 1 Feb 2021 21:14:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1612214087; bh=+12SZWhnYLHVQXoyM8JEhPHmxp8rpI5hqw7Lr/VJTwk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=IM3u8UJyQXWTWzyffsTy3v/9hb82diHUejo1q3xfdHtaj8dtd25umUNVy9T8NPl15 CZ3L/2aqcmlSGE988tNBwEwlyw+n0qMIYl6JBPm3AsgIPotsDK0RiFp7j7VwwEm9Br 5eDg2EWD2iPYdVpMJ0+5+JrwTQgpaPco+zcagytLZsoN9DEZufsLgZYjLbklBmnFqO 8t7XAkTke2whhr/VfKLNu1ovEYnvvJ7szPG3SoxFFor6PAWagcfR6AM6ZNrv7Khvc4 OjGLQGXnfCz6j8HNmGlCKn7MgZgwhpY23eu60szZUudF82YvW2swrgiU7kWgPYFqOC zZW43OkJgaN6g== Date: Mon, 1 Feb 2021 13:14:46 -0800 From: "Darrick J. Wong" To: Dai Ngo Cc: linux-fsdevel@vger.kernel.org, linux-nfs@vger.kernel.org Subject: Re: [PATCH v2] vfs: generic_copy_file_checks should return EINVAL when source offset is beyond EOF Message-ID: <20210201211446.GA7187@magnolia> References: <20210201204952.74625-1-dai.ngo@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210201204952.74625-1-dai.ngo@oracle.com> Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On Mon, Feb 01, 2021 at 03:49:52PM -0500, Dai Ngo wrote: > Fix by returning -EINVAL instead of 0, per man page of copy_file_range, Huh? That's not what the manpage[1] says: RETURN VALUE Upon successful completion, copy_file_range() will return the number of bytes copied between files. This could be less than the length originally requested. If the file offset of fd_in is at or past the end of file, no bytes are copied, and copy_file_range() returns zero. --D [1] https://man7.org/linux/man-pages/man2/copy_file_range.2.html#RETURN_VALUE > when the requested range extends beyond the end of the source file. > Problem was discovered by subtest inter11 of nfstest_ssc. > > Signed-off-by: Dai Ngo > --- > fs/read_write.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/read_write.c b/fs/read_write.c > index 75f764b43418..438c00910716 100644 > --- a/fs/read_write.c > +++ b/fs/read_write.c > @@ -1445,7 +1445,7 @@ static int generic_copy_file_checks(struct file *file_in, loff_t pos_in, > /* Shorten the copy to EOF */ > size_in = i_size_read(inode_in); > if (pos_in >= size_in) > - count = 0; > + count = -EINVAL; > else > count = min(count, size_in - (uint64_t)pos_in); > > -- > 2.9.5 >