fsnotify: Allocate overflow events with proper type
Commit 7053aee26a
"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>
这个提交包含在:
@@ -55,6 +55,13 @@ void fsnotify_destroy_group(struct fsnotify_group *group)
|
||||
/* clear the notification queue of all events */
|
||||
fsnotify_flush_notify(group);
|
||||
|
||||
/*
|
||||
* Destroy overflow event (we cannot use fsnotify_destroy_event() as
|
||||
* that deliberately ignores overflow events.
|
||||
*/
|
||||
if (group->overflow_event)
|
||||
group->ops->free_event(group->overflow_event);
|
||||
|
||||
fsnotify_put_group(group);
|
||||
}
|
||||
|
||||
@@ -99,7 +106,6 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops)
|
||||
INIT_LIST_HEAD(&group->marks_list);
|
||||
|
||||
group->ops = ops;
|
||||
fsnotify_init_event(&group->overflow_event, NULL, FS_Q_OVERFLOW);
|
||||
|
||||
return group;
|
||||
}
|
||||
|
在新工单中引用
屏蔽一个用户