nsfs: add compat ioctl handler
authorThomas Weißschuh <linux@weissschuh.net>
Wed, 11 Jan 2023 16:46:30 +0000 (16:46 +0000)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 11 Jan 2023 20:32:49 +0000 (15:32 -0500)
As all parameters and return values of the ioctls have the same
representation on both 32bit and 64bit we can reuse the normal ioctl
handler for the compat handler via compat_ptr_ioctl().

All nsfs ioctls return a plain "int" filedescriptor which is a signed
4-byte integer type on both 32bit and 64bit.
The only parameter taken is by NS_GET_OWNER_UID and is a pointer to a
"uid_t" which is a 4-byte unsigned integer type on both 32bit and 64bit.

Fixes: 6786741dbf99 ("nsfs: add ioctl to get an owning user namespace for ns file descriptor")
Reported-by: Karel Zak <kzak@redhat.com>
Link: https://github.com/util-linux/util-linux/pull/1924#issuecomment-1344133656
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/nsfs.c

index 3506f6074288a776619a6efc290330db3a5cc36a..c28f69edef97aebb500cb31d9f6211224a779131 100644 (file)
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -21,6 +21,7 @@ static long ns_ioctl(struct file *filp, unsigned int ioctl,
 static const struct file_operations ns_file_operations = {
        .llseek         = no_llseek,
        .unlocked_ioctl = ns_ioctl,
+       .compat_ioctl   = compat_ptr_ioctl,
 };
 
 static char *ns_dname(struct dentry *dentry, char *buffer, int buflen)