Re: [PATCH 1/6] fanotify: Fold dequeue_event() into process_access_response()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 13, 2019 at 4:54 PM Jan Kara <jack@xxxxxxx> wrote:
>
> Fold dequeue_event() into process_access_response(). This will make
> changes to use of ->response field easier.
>
> Signed-off-by: Jan Kara <jack@xxxxxxx>
Reviewed-by: Amir Goldstein <amir73il@xxxxxxxxx>

> ---
>  fs/notify/fanotify/fanotify_user.c | 41 ++++++++++++--------------------------
>  1 file changed, 13 insertions(+), 28 deletions(-)
>
> diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
> index 9c870b0d2b56..908ebc421d15 100644
> --- a/fs/notify/fanotify/fanotify_user.c
> +++ b/fs/notify/fanotify/fanotify_user.c
> @@ -144,28 +144,6 @@ static int fill_event_metadata(struct fsnotify_group *group,
>         return ret;
>  }
>
> -static struct fanotify_perm_event_info *dequeue_event(
> -                               struct fsnotify_group *group, int fd)
> -{
> -       struct fanotify_perm_event_info *event, *return_e = NULL;
> -
> -       spin_lock(&group->notification_lock);
> -       list_for_each_entry(event, &group->fanotify_data.access_list,
> -                           fae.fse.list) {
> -               if (event->fd != fd)
> -                       continue;
> -
> -               list_del_init(&event->fae.fse.list);
> -               return_e = event;
> -               break;
> -       }
> -       spin_unlock(&group->notification_lock);
> -
> -       pr_debug("%s: found return_re=%p\n", __func__, return_e);
> -
> -       return return_e;
> -}
> -
>  static int process_access_response(struct fsnotify_group *group,
>                                    struct fanotify_response *response_struct)
>  {
> @@ -194,14 +172,21 @@ static int process_access_response(struct fsnotify_group *group,
>         if ((response & FAN_AUDIT) && !FAN_GROUP_FLAG(group, FAN_ENABLE_AUDIT))
>                 return -EINVAL;
>
> -       event = dequeue_event(group, fd);
> -       if (!event)
> -               return -ENOENT;
> +       spin_lock(&group->notification_lock);
> +       list_for_each_entry(event, &group->fanotify_data.access_list,
> +                           fae.fse.list) {
> +               if (event->fd != fd)
> +                       continue;
>
> -       event->response = response;
> -       wake_up(&group->fanotify_data.access_waitq);
> +               list_del_init(&event->fae.fse.list);
> +               event->response = response;
> +               spin_unlock(&group->notification_lock);
> +               wake_up(&group->fanotify_data.access_waitq);
> +               return 0;
> +       }
> +       spin_unlock(&group->notification_lock);
>
> -       return 0;
> +       return -ENOENT;
>  }
>
>  static ssize_t copy_event_to_user(struct fsnotify_group *group,
> --
> 2.16.4
>



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux