[v2] fs/mnt_idmapping.c: Return -EINVAL when no map is written

Message ID 20240208-mnt-idmap-inval-v2-1-58ef26d194e0@me.com
State New
Headers
Series [v2] fs/mnt_idmapping.c: Return -EINVAL when no map is written |

Commit Message

Taylor Jackson via B4 Relay Feb. 8, 2024, 3:02 a.m. UTC
  From: Taylor Jackson <taylor.a.jackson@me.com>

Currently, it is possible to create an idmapped mount using a user
namespace without any mappings. However, this yields an idmapped
mount that doesn't actually map the ids. With the following change,
it will no longer be possible to create an idmapped mount when using
a user namespace with no mappings, and will instead return EINVAL,
an “invalid argument” error code.

Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Taylor Jackson <taylor.a.jackson@me.com>
---
Changes in v2:
- Updated commit message based on feedback 
- Link to v1: https://lore.kernel.org/r/20240206-mnt-idmap-inval-v1-1-68bfabb97533@me.com
---
 fs/mnt_idmapping.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


---
base-commit: 54be6c6c5ae8e0d93a6c4641cb7528eb0b6ba478
change-id: 20240206-mnt-idmap-inval-18d3a35f83fd

Best regards,
  

Comments

Christian Brauner Feb. 8, 2024, 9:13 a.m. UTC | #1
On Thu, 08 Feb 2024 03:02:54 +0000, Taylor Jackson wrote:
> Currently, it is possible to create an idmapped mount using a user
> namespace without any mappings. However, this yields an idmapped
> mount that doesn't actually map the ids. With the following change,
> it will no longer be possible to create an idmapped mount when using
> a user namespace with no mappings, and will instead return EINVAL,
> an “invalid argument” error code.
> 
> [...]

Thanks for the fix!
In case you're interested, it would be worth expanding
tool/testing/selftests/mount_setattr to verify that it's now impossible to use
an empty idmapping.

But note, that currently tool/testing/selftests/mount_setattr/ is broken
because the tests assume that tmpfs cannot be idmapped which hasn't been true
for a long time.

---

Applied to the vfs.misc branch of the vfs/vfs.git tree.
Patches in the vfs.misc branch should appear in linux-next soon.

Please report any outstanding bugs that were missed during review in a
new review to the original patch series allowing us to drop it.

It's encouraged to provide Acked-bys and Reviewed-bys even though the
patch has now been applied. If possible patch trailers will be updated.

Note that commit hashes shown below are subject to change due to rebase,
trailer updates or similar. If in doubt, please check the listed branch.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git
branch: vfs.misc

[1/1] fs/mnt_idmapping.c: Return -EINVAL when no map is written
      https://git.kernel.org/vfs/vfs/c/b4291c7fd9e5
  

Patch

diff --git a/fs/mnt_idmapping.c b/fs/mnt_idmapping.c
index 64c5205e2b5e..3c60f1eaca61 100644
--- a/fs/mnt_idmapping.c
+++ b/fs/mnt_idmapping.c
@@ -214,7 +214,7 @@  static int copy_mnt_idmap(struct uid_gid_map *map_from,
 	 * anything at all.
 	 */
 	if (nr_extents == 0)
-		return 0;
+		return -EINVAL;
 
 	/*
 	 * Here we know that nr_extents is greater than zero which means