fsnotify: Protect bail out path of fsnotify_add_mark_locked() properly
When fsnotify_add_mark_locked() fails it cleans up the mark it was adding. Since the mark is already visible in group's list, we should protect update of mark->flags with mark->lock. I'm not aware of any real issues this could cause (since we also hold group->mark_mutex) but better be safe and obey locking rules properly. Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
Родитель
b3a0066005
Коммит
9cf90cef36
|
@ -599,9 +599,11 @@ int fsnotify_add_mark_locked(struct fsnotify_mark *mark, struct inode *inode,
|
|||
|
||||
return ret;
|
||||
err:
|
||||
spin_lock(&mark->lock);
|
||||
mark->flags &= ~(FSNOTIFY_MARK_FLAG_ALIVE |
|
||||
FSNOTIFY_MARK_FLAG_ATTACHED);
|
||||
list_del_init(&mark->g_list);
|
||||
spin_unlock(&mark->lock);
|
||||
atomic_dec(&group->num_marks);
|
||||
|
||||
fsnotify_put_mark(mark);
|
||||
|
|
Загрузка…
Ссылка в новой задаче