2022-05-23 07:04:52

by Vasily Averin

[permalink] [raw]
Subject: [PATCH v3] fanotify: fix incorrect fmode_t casts

Fixes sparce warnings:
fs/notify/fanotify/fanotify_user.c:267:63: sparse:
warning: restricted fmode_t degrades to integer
fs/notify/fanotify/fanotify_user.c:1351:28: sparse:
warning: restricted fmode_t degrades to integer

FMODE_NONTIFY have bitwise fmode_t type and requires __force attribute
for any casts.

Signed-off-by: Vasily Averin <[email protected]>
Reviewed-by: Christian Brauner (Microsoft) <[email protected]>
---
v3: split, according to Christoph Hellwig recommendation
---
fs/notify/fanotify/fanotify_user.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
index a792e21c5309..16d8fc84713a 100644
--- a/fs/notify/fanotify/fanotify_user.c
+++ b/fs/notify/fanotify/fanotify_user.c
@@ -264,7 +264,7 @@ static int create_fd(struct fsnotify_group *group, struct path *path,
* originally opened O_WRONLY.
*/
new_file = dentry_open(path,
- group->fanotify_data.f_flags | FMODE_NONOTIFY,
+ group->fanotify_data.f_flags | __FMODE_NONOTIFY,
current_cred());
if (IS_ERR(new_file)) {
/*
@@ -1348,7 +1348,7 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
(!(fid_mode & FAN_REPORT_NAME) || !(fid_mode & FAN_REPORT_FID)))
return -EINVAL;

- f_flags = O_RDWR | FMODE_NONOTIFY;
+ f_flags = O_RDWR | __FMODE_NONOTIFY;
if (flags & FAN_CLOEXEC)
f_flags |= O_CLOEXEC;
if (flags & FAN_NONBLOCK)
--
2.36.1



2022-05-23 07:12:25

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH v3] fanotify: fix incorrect fmode_t casts

Looks good:

Reviewed-by: Christoph Hellwig <[email protected]>

2022-05-23 09:49:53

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH v3] fanotify: fix incorrect fmode_t casts

On Sun 22-05-22 15:08:02, Vasily Averin wrote:
> Fixes sparce warnings:
> fs/notify/fanotify/fanotify_user.c:267:63: sparse:
> warning: restricted fmode_t degrades to integer
> fs/notify/fanotify/fanotify_user.c:1351:28: sparse:
> warning: restricted fmode_t degrades to integer
>
> FMODE_NONTIFY have bitwise fmode_t type and requires __force attribute
> for any casts.
>
> Signed-off-by: Vasily Averin <[email protected]>
> Reviewed-by: Christian Brauner (Microsoft) <[email protected]>

Thanks. I've merged the patch to my tree.

Honza

> ---
> v3: split, according to Christoph Hellwig recommendation
> ---
> fs/notify/fanotify/fanotify_user.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
> index a792e21c5309..16d8fc84713a 100644
> --- a/fs/notify/fanotify/fanotify_user.c
> +++ b/fs/notify/fanotify/fanotify_user.c
> @@ -264,7 +264,7 @@ static int create_fd(struct fsnotify_group *group, struct path *path,
> * originally opened O_WRONLY.
> */
> new_file = dentry_open(path,
> - group->fanotify_data.f_flags | FMODE_NONOTIFY,
> + group->fanotify_data.f_flags | __FMODE_NONOTIFY,
> current_cred());
> if (IS_ERR(new_file)) {
> /*
> @@ -1348,7 +1348,7 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
> (!(fid_mode & FAN_REPORT_NAME) || !(fid_mode & FAN_REPORT_FID)))
> return -EINVAL;
>
> - f_flags = O_RDWR | FMODE_NONOTIFY;
> + f_flags = O_RDWR | __FMODE_NONOTIFY;
> if (flags & FAN_CLOEXEC)
> f_flags |= O_CLOEXEC;
> if (flags & FAN_NONBLOCK)
> --
> 2.36.1
>
--
Jan Kara <[email protected]>
SUSE Labs, CR