Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp2150760rdg; Sun, 15 Oct 2023 13:44:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF88n7nOYC7pkfJ2mh9QuLLPcQ8ZAP4KlWhd/OWqIPXYLPUOlxyB3/Zj4y3iKHRKqQrmCMl X-Received: by 2002:a05:6a00:2486:b0:6b8:a6d6:f51a with SMTP id c6-20020a056a00248600b006b8a6d6f51amr6143389pfv.31.1697402670548; Sun, 15 Oct 2023 13:44:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697402670; cv=none; d=google.com; s=arc-20160816; b=xTrrZ/nWQP0Ym6laQXKvAjlr4C5YPqKEfHrBV0xV/4CuT6JSr695vx8Qd0gwU78E0w Nv6AXnXFY52VCxA9KYuun1u6pjtPJoJwz8qCFWnDoh5eBYBe5lwDYgeze78HRn0SN4jS fh1mpgYkw0g0YkdFGVtkW8SCAlY2yQyiZ5Ev8HJRaXELZzT40M5f4E6LxVY1S+8N2x+Z ehg8VVK1OVxH6SifhbtHKwArtAUcyRwgGf1lRWkaQFEopMaAwDoJOmi1OPj7eGjMVCOT +8OzLULf4dtov9XCiCplf4HZpMzNlX1Gyta7au4fiPDC+MWfUZDTw7gCOtNBaaJ/RMQw yVPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:to:from :subject:message-id:dkim-signature; bh=h3g9w70mVf4CuNbdvKE1vEjVNPPxNpvm4v1dF1b8Gbs=; fh=vs3LTbfvCAaYKTmdKmRSr0Hzh5VBoEsd8bMyd+Y3JSE=; b=BglBiKGy1bXefGWr3dWJZIxHkVS/IOev0w74mw4f8bSc7RF61yeVvN+RqfAbwLLNMN A8L1hckqksWs5rScRrP8J16oEmMTts2BojiXUcRLhugLaQIk++pp6rCEhXFZDKPqM52u 8yhzU7SThLnLB+tL2cerO254g59i+qwsbFIOlbzwNe6a4qdHruF9JejIBd7e/zhCtYSi ketkS7orjqm6G+F3bRmE01JCKBaFwon4iQuJax07IycjfgBR7x18wHS7ovdEsEnZSka6 7BuqqkHiIa7srBbuR9tY7uHc7yDpr0u+VBycmeNufLQ+E/HCNmoEO1EJTaAviNjUKMOY 2FJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Gd2IX0mM; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id i7-20020a63cd07000000b00578a9ea5686si8743196pgg.660.2023.10.15.13.44.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 15 Oct 2023 13:44:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Gd2IX0mM; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 682018068961; Sun, 15 Oct 2023 13:44:22 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229766AbjJOUoV (ORCPT + 99 others); Sun, 15 Oct 2023 16:44:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229641AbjJOUoV (ORCPT ); Sun, 15 Oct 2023 16:44:21 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96F29AB for ; Sun, 15 Oct 2023 13:44:19 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EBF2DC433C7; Sun, 15 Oct 2023 20:44:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697402659; bh=EhY4qmnZXiEzTjmTY4xX8SjAcYitiaMfwDE0nmvDc1E=; h=Subject:From:To:Date:In-Reply-To:References:From; b=Gd2IX0mMcdKe3A/8+FqKn7kLSE+l5B9u3aWvUk0HEdQ24aCELI/59yOV2nKhdVica SnzRCNtem3L/0YucxryouLgN7m3AoF/NQz0xPSFk2ziD4iY+/9lzgaGtL3ir5jjlw0 zjEJs8KOO1R4PwVA7bPVVPCTO6BXtU5bSKXzY8VL9PGoo+JQbDN/BTUSLHKKywvcAl 6CHKzWo5vbNIP8xL0EQcfLKi1rfgQ0F2izxR8ZmRWtMO7vZxovxhT81TZrv9Sm3I64 82oVG3sAdZ4ZslewUyLSFQPnTJJerJg5INEhRUYF5QgBwKXOXlPo8ADqoEGgUCAIIL kL1lv+jrfLH+w== Message-ID: Subject: Re: [PATCH] nfsd: lock_rename() needs both directories to live on the same fs From: Jeff Layton To: Al Viro , linux-nfs@vger.kernel.org Date: Sun, 15 Oct 2023 16:44:17 -0400 In-Reply-To: <20231015172927.GE800259@ZenIV> References: <20231015172927.GE800259@ZenIV> Content-Type: text/plain; charset="ISO-8859-15" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.48.4 (3.48.4-1.fc38) MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Sun, 15 Oct 2023 13:44:22 -0700 (PDT) On Sun, 2023-10-15 at 18:29 +0100, Al Viro wrote: > ... checking that after lock_rename() is too late. Incidentally, > NFSv2 had no nfserr_xdev... >=20 > Fixes: aa387d6ce153 "nfsd: fix EXDEV checking in rename" > Cc: stable@vger.kernel.org # v3.9+ > Reviewed-by: Jeff Layton > Signed-off-by: Al Viro > --- >=20 > [in git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git #nfsd-fix; > it's an immutable branch, please either pull from it or put that thing > into an immutable branch in your tree - there's a lock_rename-related > series in the making and I'd rather avoid mixing unrelated nfsd stuff > into it ;-/] >=20 > diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c > index 48260cf68fde..02f5fcaad03f 100644 > --- a/fs/nfsd/vfs.c > +++ b/fs/nfsd/vfs.c > @@ -1788,6 +1788,12 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh = *ffhp, char *fname, int flen, > if (!flen || isdotent(fname, flen) || !tlen || isdotent(tname, tlen)) > goto out; > =20 > + err =3D (rqstp->rq_vers =3D=3D 2) ? nfserr_acces : nfserr_xdev; > + if (ffhp->fh_export->ex_path.mnt !=3D tfhp->fh_export->ex_path.mnt) > + goto out; > + if (ffhp->fh_export->ex_path.dentry !=3D tfhp->fh_export->ex_path.dentr= y) > + goto out; > + > retry: > host_err =3D fh_want_write(ffhp); > if (host_err) { > @@ -1823,12 +1829,6 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh = *ffhp, char *fname, int flen, > if (ndentry =3D=3D trap) > goto out_dput_new; > =20 > - host_err =3D -EXDEV; > - if (ffhp->fh_export->ex_path.mnt !=3D tfhp->fh_export->ex_path.mnt) > - goto out_dput_new; > - if (ffhp->fh_export->ex_path.dentry !=3D tfhp->fh_export->ex_path.dentr= y) > - goto out_dput_new; > - > if ((ndentry->d_sb->s_export_op->flags & EXPORT_OP_CLOSE_BEFORE_UNLINK)= && > nfsd_has_cached_files(ndentry)) { > close_cached =3D true; I ran this through pynfs and fstests (via kdevops) and it seemed to do fine. You can also add: Tested-by: Jeff Layton