fs.mount_setattr.v5.17-rc4
-----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCYhDJyQAKCRCRxhvAZXjc oqDZAP47lp7dQhndp5AuIsoeL/YIqbhFNfJ8hVUAcbFx/wJPFAEAtwXoeVXWT2ms pU4nafoaQOpgsZJnD0UC5B/Pkr6laQ4= =N5oo -----END PGP SIGNATURE----- Merge tag 'fs.mount_setattr.v5.17-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux Pull mount_setattr test/doc fixes from Christian Brauner: "This contains a fix for one of the selftests for the mount_setattr syscall to create idmapped mounts, an entry for idmapped mounts for maintainers, and missing kernel documentation for the helper we split out some time ago to get and yield write access to a mount when changing mount properties" * tag 'fs.mount_setattr.v5.17-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux: fs: add kernel doc for mnt_{hold,unhold}_writers() MAINTAINERS: add entry for idmapped mounts tests: fix idmapped mount_setattr test
This commit is contained in:
commit
7f25f0412c
|
@ -9263,6 +9263,15 @@ S: Maintained
|
|||
W: https://github.com/o2genum/ideapad-slidebar
|
||||
F: drivers/input/misc/ideapad_slidebar.c
|
||||
|
||||
IDMAPPED MOUNTS
|
||||
M: Christian Brauner <brauner@kernel.org>
|
||||
L: linux-fsdevel@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git
|
||||
F: Documentation/filesystems/idmappings.rst
|
||||
F: tools/testing/selftests/mount_setattr/
|
||||
F: include/linux/mnt_idmapping.h
|
||||
|
||||
IDT VersaClock 5 CLOCK DRIVER
|
||||
M: Luca Ceresoli <luca@lucaceresoli.net>
|
||||
S: Maintained
|
||||
|
|
|
@ -469,6 +469,24 @@ void mnt_drop_write_file(struct file *file)
|
|||
}
|
||||
EXPORT_SYMBOL(mnt_drop_write_file);
|
||||
|
||||
/**
|
||||
* mnt_hold_writers - prevent write access to the given mount
|
||||
* @mnt: mnt to prevent write access to
|
||||
*
|
||||
* Prevents write access to @mnt if there are no active writers for @mnt.
|
||||
* This function needs to be called and return successfully before changing
|
||||
* properties of @mnt that need to remain stable for callers with write access
|
||||
* to @mnt.
|
||||
*
|
||||
* After this functions has been called successfully callers must pair it with
|
||||
* a call to mnt_unhold_writers() in order to stop preventing write access to
|
||||
* @mnt.
|
||||
*
|
||||
* Context: This function expects lock_mount_hash() to be held serializing
|
||||
* setting MNT_WRITE_HOLD.
|
||||
* Return: On success 0 is returned.
|
||||
* On error, -EBUSY is returned.
|
||||
*/
|
||||
static inline int mnt_hold_writers(struct mount *mnt)
|
||||
{
|
||||
mnt->mnt.mnt_flags |= MNT_WRITE_HOLD;
|
||||
|
@ -500,6 +518,18 @@ static inline int mnt_hold_writers(struct mount *mnt)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* mnt_unhold_writers - stop preventing write access to the given mount
|
||||
* @mnt: mnt to stop preventing write access to
|
||||
*
|
||||
* Stop preventing write access to @mnt allowing callers to gain write access
|
||||
* to @mnt again.
|
||||
*
|
||||
* This function can only be called after a successful call to
|
||||
* mnt_hold_writers().
|
||||
*
|
||||
* Context: This function expects lock_mount_hash() to be held.
|
||||
*/
|
||||
static inline void mnt_unhold_writers(struct mount *mnt)
|
||||
{
|
||||
/*
|
||||
|
|
|
@ -1236,7 +1236,7 @@ static int get_userns_fd(unsigned long nsid, unsigned long hostid, unsigned long
|
|||
}
|
||||
|
||||
/**
|
||||
* Validate that an attached mount in our mount namespace can be idmapped.
|
||||
* Validate that an attached mount in our mount namespace cannot be idmapped.
|
||||
* (The kernel enforces that the mount's mount namespace and the caller's mount
|
||||
* namespace match.)
|
||||
*/
|
||||
|
@ -1259,7 +1259,7 @@ TEST_F(mount_setattr_idmapped, attached_mount_inside_current_mount_namespace)
|
|||
|
||||
attr.userns_fd = get_userns_fd(0, 10000, 10000);
|
||||
ASSERT_GE(attr.userns_fd, 0);
|
||||
ASSERT_EQ(sys_mount_setattr(open_tree_fd, "", AT_EMPTY_PATH, &attr, sizeof(attr)), 0);
|
||||
ASSERT_NE(sys_mount_setattr(open_tree_fd, "", AT_EMPTY_PATH, &attr, sizeof(attr)), 0);
|
||||
ASSERT_EQ(close(attr.userns_fd), 0);
|
||||
ASSERT_EQ(close(open_tree_fd), 0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue