Skip to content

Commit

Permalink
fanotify: Dont try to open a file descriptor for the overflow event
Browse files Browse the repository at this point in the history
We should not try to open a file descriptor for the overflow event since this
will always fail.

Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Signed-off-by: Eric Paris <eparis@redhat.com>
  • Loading branch information
Lino Sanfilippo authored and Eric Paris committed Dec 7, 2010
1 parent e9a3854 commit fdbf3ce
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions fs/notify/fanotify/fanotify_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,16 +110,24 @@ static int fill_event_metadata(struct fsnotify_group *group,
struct fanotify_event_metadata *metadata,
struct fsnotify_event *event)
{
int ret = 0;

pr_debug("%s: group=%p metadata=%p event=%p\n", __func__,
group, metadata, event);

metadata->event_len = FAN_EVENT_METADATA_LEN;
metadata->vers = FANOTIFY_METADATA_VERSION;
metadata->mask = event->mask & FAN_ALL_OUTGOING_EVENTS;
metadata->pid = pid_vnr(event->tgid);
metadata->fd = create_fd(group, event);
if (unlikely(event->mask & FAN_Q_OVERFLOW))
metadata->fd = FAN_NOFD;
else {
metadata->fd = create_fd(group, event);
if (metadata->fd < 0)
ret = metadata->fd;
}

return metadata->fd;
return ret;
}

#ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
Expand Down Expand Up @@ -261,7 +269,7 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
if (ret < 0)
goto out;

fd = ret;
fd = fanotify_event_metadata.fd;
ret = prepare_for_access_response(group, event, fd);
if (ret)
goto out_close_fd;
Expand All @@ -275,7 +283,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
out_kill_access_response:
remove_access_response(group, event, fd);
out_close_fd:
sys_close(fd);
if (fd != FAN_NOFD)
sys_close(fd);
out:
#ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
if (event->mask & FAN_ALL_PERM_EVENTS) {
Expand Down

0 comments on commit fdbf3ce

Please sign in to comment.