diff options
author | Chunwei Chen <[email protected]> | 2016-12-16 12:41:56 -0800 |
---|---|---|
committer | Chunwei Chen <[email protected]> | 2016-12-16 12:46:46 -0800 |
commit | c360af541117a0978b7fe146b59c12ad2f80d162 (patch) | |
tree | 2a1e6216ba97a7e88d39071d3c45c3cbf57fcaa4 | |
parent | 05100ec8f06589896fcd2a847a12c5b6fcb67b81 (diff) |
Fix fchange in zpl_ioctl_setflags
The fchange in zpl_ioctl_setflags was for detecting flag change. However it
was incorrect and would always fail to detect a flag change from set to unset,
causing users without CAP_LINUX_IMMUTABLE to be able to unset flags.
Signed-off-by: Chunwei Chen <[email protected]>
-rw-r--r-- | module/zfs/zpl_file.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/module/zfs/zpl_file.c b/module/zfs/zpl_file.c index a22522028..332fb992e 100644 --- a/module/zfs/zpl_file.c +++ b/module/zfs/zpl_file.c @@ -737,8 +737,7 @@ zpl_ioctl_getflags(struct file *filp, void __user *arg) * is outside of our jurisdiction. */ -#define fchange(f0, f1, b0, b1) ((((f0) & (b0)) == (b0)) != \ - (((b1) & (f1)) == (f1))) +#define fchange(f0, f1, b0, b1) (!((f0) & (b0)) != !((f1) & (b1))) static int zpl_ioctl_setflags(struct file *filp, void __user *arg) |