diff options
author | Jan Kara <jack@suse.cz> | 2014-02-21 19:14:11 +0100 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2014-02-25 11:18:06 +0100 |
commit | ff57cd5863cf3014c1c5ed62ce2715294f065b17 (patch) | |
tree | c9bc7bd04326afc92d85a476d28453218c40e14e /fs/notify/notification.c | |
parent | fanotify: Handle overflow in case of permission events (diff) | |
download | linux-ff57cd5863cf3014c1c5ed62ce2715294f065b17.tar.xz linux-ff57cd5863cf3014c1c5ed62ce2715294f065b17.zip |
fsnotify: Allocate overflow events with proper type
Commit 7053aee26a35 "fsnotify: do not share events between notification
groups" used overflow event statically allocated in a group with the
size of the generic notification event. This causes problems because
some code looks at type specific parts of event structure and gets
confused by a random data it sees there and causes crashes.
Fix the problem by allocating overflow event with type corresponding to
the group type so code cannot get confused.
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/notify/notification.c')
-rw-r--r-- | fs/notify/notification.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/notify/notification.c b/fs/notify/notification.c index 6a4ba17c0395..1e58402171a5 100644 --- a/fs/notify/notification.c +++ b/fs/notify/notification.c @@ -98,11 +98,11 @@ int fsnotify_add_notify_event(struct fsnotify_group *group, if (group->q_len >= group->max_events) { ret = 2; /* Queue overflow event only if it isn't already queued */ - if (!list_empty(&group->overflow_event.list)) { + if (!list_empty(&group->overflow_event->list)) { mutex_unlock(&group->notification_mutex); return ret; } - event = &group->overflow_event; + event = group->overflow_event; goto queue; } |