mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-28 20:37:27 +00:00
fsnotify: fix false positive warning on inode delete
When inode is getting deleted and someone else holds reference to a mark
attached to the inode, we just detach the connector from the inode. In
that case fsnotify_put_mark() called from fsnotify_destroy_marks() will
decide to recalculate mask for the inode and __fsnotify_recalc_mask()
will WARN about invalid connector type:
WARNING: CPU: 1 PID: 12015 at fs/notify/mark.c:139
__fsnotify_recalc_mask+0x2d7/0x350 fs/notify/mark.c:139
Actually there's no reason to warn about detached connector in
__fsnotify_recalc_mask() so just silently skip updating the mask in such
case.
Reported-by: syzbot+c34692a51b9a6ca93540@syzkaller.appspotmail.com
Fixes: 3ac70bfcde
("fsnotify: add helper to get mask from connector")
Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
2ad0d52699
commit
d3bc0fa841
@ -132,13 +132,13 @@ static void __fsnotify_recalc_mask(struct fsnotify_mark_connector *conn)
|
||||
struct fsnotify_mark *mark;
|
||||
|
||||
assert_spin_locked(&conn->lock);
|
||||
/* We can get detached connector here when inode is getting unlinked. */
|
||||
if (!fsnotify_valid_obj_type(conn->type))
|
||||
return;
|
||||
hlist_for_each_entry(mark, &conn->list, obj_list) {
|
||||
if (mark->flags & FSNOTIFY_MARK_FLAG_ATTACHED)
|
||||
new_mask |= mark->mask;
|
||||
}
|
||||
if (WARN_ON(!fsnotify_valid_obj_type(conn->type)))
|
||||
return;
|
||||
|
||||
*fsnotify_conn_mask_p(conn) = new_mask;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user