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 <david.chen@osnexus.com>
This commit is contained in:
parent
2a51899946
commit
d425320ac8
|
@ -736,8 +736,7 @@ zpl_ioctl_getflags(struct file *filp, void __user *arg)
|
||||||
* is outside of our jurisdiction.
|
* is outside of our jurisdiction.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define fchange(f0, f1, b0, b1) ((((f0) & (b0)) == (b0)) != \
|
#define fchange(f0, f1, b0, b1) (!((f0) & (b0)) != !((f1) & (b1)))
|
||||||
(((b1) & (f1)) == (f1)))
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
zpl_ioctl_setflags(struct file *filp, void __user *arg)
|
zpl_ioctl_setflags(struct file *filp, void __user *arg)
|
||||||
|
|
Loading…
Reference in New Issue