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
05100ec8f0
commit
c360af5411
@ -737,8 +737,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
Block a user