From patchwork Mon Jun 6 12:31:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 12870288 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63704C43334 for ; Mon, 6 Jun 2022 12:31:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237051AbiFFMbp (ORCPT ); Mon, 6 Jun 2022 08:31:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237044AbiFFMbo (ORCPT ); Mon, 6 Jun 2022 08:31:44 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D93392ADF67; Mon, 6 Jun 2022 05:31:40 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 7243DB81929; Mon, 6 Jun 2022 12:31:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC10EC3411C; Mon, 6 Jun 2022 12:31:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1654518698; bh=0HYYkl7L1QJ5MkmvZX9/5CDL9vz7Q8mjCPspPyzNYTc=; h=Subject:To:Cc:From:Date:From; b=kR4dn81IqI7nHcoB3+To2cnRjJJ+me7H8NdlnI4o/mbFJO6gutbpiuZ4EVbTCp1fe eE4tgE0lJFkBx3WaReGEsOHIDk3LHO/tfeXjyqn7mlsVvXPmYVCWT2O7GfiySVh9MZ RGZz+9jZgc71mrbP+gwVWS+TcSJwu26cUjzh8Yik= Subject: FAILED: patch "[PATCH] exportfs: support idmapped mounts" failed to apply to 5.15-stable tree To: brauner@kernel.org, amir73il@gmail.com, gscrivan@redhat.com, hch@lst.de, linux-fsdevel@vger.kernel.org, mszeredi@redhat.com, stable@vger.kernel.org Cc: From: Date: Mon, 06 Jun 2022 14:31:35 +0200 Message-ID: <165451869522688@kroah.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org The patch below does not apply to the 5.15-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to . thanks, greg k-h ------------------ original commit in Linus's tree ------------------ From 3a761d72fa62eec8913e45d29375344f61706541 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Mon, 4 Apr 2022 12:51:41 +0200 Subject: [PATCH] exportfs: support idmapped mounts Make the two locations where exportfs helpers check permission to lookup a given inode idmapped mount aware by switching it to the lookup_one() helper. This is a bugfix for the open_by_handle_at() system call which doesn't take idmapped mounts into account currently. It's not tied to a specific commit so we'll just Cc stable. In addition this is required to support idmapped base layers in overlay. The overlay filesystem uses exportfs to encode and decode file handles for its index=on mount option and when nfs_export=on. Cc: Cc: Tested-by: Giuseppe Scrivano Reviewed-by: Amir Goldstein Reviewed-by: Christoph Hellwig Signed-off-by: Christian Brauner (Microsoft) Signed-off-by: Miklos Szeredi diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c index 0106eba46d5a..3ef80d000e13 100644 --- a/fs/exportfs/expfs.c +++ b/fs/exportfs/expfs.c @@ -145,7 +145,7 @@ static struct dentry *reconnect_one(struct vfsmount *mnt, if (err) goto out_err; dprintk("%s: found name: %s\n", __func__, nbuf); - tmp = lookup_one_len_unlocked(nbuf, parent, strlen(nbuf)); + tmp = lookup_one_unlocked(mnt_user_ns(mnt), nbuf, parent, strlen(nbuf)); if (IS_ERR(tmp)) { dprintk("%s: lookup failed: %d\n", __func__, PTR_ERR(tmp)); err = PTR_ERR(tmp); @@ -525,7 +525,8 @@ exportfs_decode_fh_raw(struct vfsmount *mnt, struct fid *fid, int fh_len, } inode_lock(target_dir->d_inode); - nresult = lookup_one_len(nbuf, target_dir, strlen(nbuf)); + nresult = lookup_one(mnt_user_ns(mnt), nbuf, + target_dir, strlen(nbuf)); if (!IS_ERR(nresult)) { if (unlikely(nresult->d_inode != result->d_inode)) { dput(nresult); From patchwork Tue Jun 7 10:08:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Brauner X-Patchwork-Id: 12871687 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B68EDCCA47C for ; Tue, 7 Jun 2022 10:09:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240630AbiFGKJR (ORCPT ); Tue, 7 Jun 2022 06:09:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52900 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231395AbiFGKJM (ORCPT ); Tue, 7 Jun 2022 06:09:12 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2122584A21; Tue, 7 Jun 2022 03:09:11 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id AF2C061444; Tue, 7 Jun 2022 10:09:10 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 184A2C385A5; Tue, 7 Jun 2022 10:09:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1654596550; bh=Xl70ZrJYXQ/z1wrP2I4gx9fjVbu5qC8UmIuY2iI9hq8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pPgOnCw+tS8CUR8g9N4w3V+AvcGPeyDSDSkV1X9XuvcfI7IBLAW/cRoVvpgzEYw/K 5KR4qz34cqQ++7H0QjdFxUTxAxERQMU3WLCZTKWhJV/CUmiF15Y7DZW4IyCWCnpSNM ygc4WbhrCu/ug5hGPPeBwhb6aQ+SThGHhdh0DWmnME5BBLSewrOzXhG+/4CLLyrafF a7HeyezNlYXl9pY10yhfta5pcZtqBX1RWRLXIRJhaYyjnohocfPwQ5UhLjTFAubztM c7K7BTFlck2lFEfgvzjK0cVj+DCRyurblMkUMn+21MabqBFOiu4/xiZsZOrgC7TAeT cgHiSiemkYSGA== From: Christian Brauner To: Greg KH Cc: Christian Brauner , Amir Goldstein , Miklos Szeredi , Giuseppe Scrivano , Christoph Hellwig , linux-fsdevel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH 5.15.y 2/2] exportfs: support idmapped mounts Date: Tue, 7 Jun 2022 12:08:39 +0200 Message-Id: <20220607100840.1686673-2-brauner@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <165451869522688@kroah.com> References: <20220607100840.1686673-1-brauner@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2178; h=from:subject; bh=Xl70ZrJYXQ/z1wrP2I4gx9fjVbu5qC8UmIuY2iI9hq8=; b=owGbwMvMwCU28Zj0gdSKO4sYT6slMSTNV17onvanYm7oldTny5e5zfZe6sDjaTxxX8jzsyar3vze 9e88Z0cpC4MYF4OsmCKLQ7tJuNxynorNRpkaMHNYmUCGMHBxCsBEWlMY/krPMRC/xbcvesnqm4FVKp svs9p0bTqbpSdgFpcdn1/2/Bcjw0zmLB2v0sS8ExJ171K+cT8rFXibkHjgpZfCLvMNkhfWcAEA X-Developer-Key: i=brauner@kernel.org; a=openpgp; fpr=4880B8C9BD0E5106FC070F4F7B3C391EFEA93624 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org Make the two locations where exportfs helpers check permission to lookup a given inode idmapped mount aware by switching it to the lookup_one() helper. This is a bugfix for the open_by_handle_at() system call which doesn't take idmapped mounts into account currently. It's not tied to a specific commit so we'll just Cc stable. In addition this is required to support idmapped base layers in overlay. The overlay filesystem uses exportfs to encode and decode file handles for its index=on mount option and when nfs_export=on. Cc: Cc: Tested-by: Giuseppe Scrivano Reviewed-by: Amir Goldstein Reviewed-by: Christoph Hellwig Signed-off-by: Christian Brauner (Microsoft) Signed-off-by: Miklos Szeredi Signed-off-by: Christian Brauner (Microsoft) --- Hey Greg, This was missing a preliminary commit. My build machines are currently down so I couldn't do a test build but this should build cleanly. Thanks! Christian --- fs/exportfs/expfs.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c index 0106eba46d5a..3ef80d000e13 100644 --- a/fs/exportfs/expfs.c +++ b/fs/exportfs/expfs.c @@ -145,7 +145,7 @@ static struct dentry *reconnect_one(struct vfsmount *mnt, if (err) goto out_err; dprintk("%s: found name: %s\n", __func__, nbuf); - tmp = lookup_one_len_unlocked(nbuf, parent, strlen(nbuf)); + tmp = lookup_one_unlocked(mnt_user_ns(mnt), nbuf, parent, strlen(nbuf)); if (IS_ERR(tmp)) { dprintk("%s: lookup failed: %d\n", __func__, PTR_ERR(tmp)); err = PTR_ERR(tmp); @@ -525,7 +525,8 @@ exportfs_decode_fh_raw(struct vfsmount *mnt, struct fid *fid, int fh_len, } inode_lock(target_dir->d_inode); - nresult = lookup_one_len(nbuf, target_dir, strlen(nbuf)); + nresult = lookup_one(mnt_user_ns(mnt), nbuf, + target_dir, strlen(nbuf)); if (!IS_ERR(nresult)) { if (unlikely(nresult->d_inode != result->d_inode)) { dput(nresult);