Patch "btrfs: bugfix: handle FS_IOC32_{GETFLAGS,SETFLAGS,GETVERSION} in btrfs_ioctl" has been added to the 4.5-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
btrfs: bugfix: handle FS_IOC32_{GETFLAGS,SETFLAGS,GETVERSION} in btrfs_ioctl
to the 4.5-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
btrfs-bugfix-handle-fs_ioc32_-getflags-setflags-getversion-in-btrfs_ioctl.patch
and it can be found in the queue-4.5 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
4c63c2454eff996c5e27991221106eb511f7db38Mon Sep 17 00:00:00 2001
From: Luke Dashjr <[email protected]>
Date: Thu, 29 Oct 2015 08:22:21 +0000
Subject: btrfs: bugfix: handle FS_IOC32_{GETFLAGS,SETFLAGS,GETVERSION} in btrfs_ioctl
From: Luke Dashjr <[email protected]>
commit 4c63c2454eff996c5e27991221106eb511f7db38 upstream.
32-bit ioctl uses these rather than the regular FS_IOC_* versions. They can be handled in btrfs using the same code. Without this, 32-bit {ch,ls}attr fail.
--- fs/btrfs/ctree.h | 1 + fs/btrfs/file.c | 2 +- fs/btrfs/inode.c | 2 +- fs/btrfs/ioctl.c | 21 +++++++++++++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-)
fs/btrfs/ctree.h +1 -0
@@ -4089,6 +4089,7 @@ void btrfs_test_inode_set_ops(struct ino/* ioctl.c */ long btrfs_ioctl (struct file *file,unsigned int cmd,unsigned long arg); +long btrfs_compat_ioctl (struct file *file,unsigned int cmd,unsigned long arg);void btrfs_update_iflags (struct inode *inode);void btrfs_inherit_iflags (struct inode *inode,struct inode *dir);int btrfs_is_empty_uuid (u8 *uuid);
fs/btrfs/file.c +1 -1
@@ -2931,7 +2931,7 @@ const struct file_operations btrfs_file_ .fallocate = btrfs_fallocate, .unlocked_ioctl = btrfs_ioctl, #ifdef CONFIG_COMPAT - .compat_ioctl = btrfs_ioctl, + .compat_ioctl = btrfs_compat_ioctl, #endif .copy_file_range = btrfs_copy_file_range, .clone_file_range = btrfs_clone_file_range,
fs/btrfs/inode.c +1 -1
@@ -10088,7 +10088,7 @@ static const struct file_operations btrf .iterate = btrfs_real_readdir, .unlocked_ioctl = btrfs_ioctl, #ifdef CONFIG_COMPAT - .compat_ioctl = btrfs_ioctl, + .compat_ioctl = btrfs_compat_ioctl, #endif .release = btrfs_release_file, .fsync = btrfs_sync_file,
fs/btrfs/ioctl.c +21 -0
@@ -5555,3 +5555,24 @@ long btrfs_ioctl(struct file *file, unsireturn -ENOTTY ; } + +#ifdef CONFIG_COMPAT +long btrfs_compat_ioctl (struct file *file,unsigned int cmd,unsigned long arg) +{ +switch (cmd) { +case FS_IOC32_GETFLAGS : + cmd =FS_IOC_GETFLAGS ; +break ; +case FS_IOC32_SETFLAGS : + cmd =FS_IOC_SETFLAGS ; +break ; +case FS_IOC32_GETVERSION : + cmd =FS_IOC_GETVERSION ; +break ; +default : +return -ENOIOCTLCMD ; + } + +return btrfs_ioctl (file, cmd, (unsigned long )compat_ptr (arg)); +} +#endif
Patches currently in stable-queue which might be from [email protected] are
queue-4.5/btrfs-bugfix-handle-fs_ioc32_-getflags-setflags-getversion-in-btrfs_ioctl.patch