fanotify: compare fsid when merging name event
authorJan Kara <jack@suse.cz>
Tue, 28 Jul 2020 08:58:07 +0000 (10:58 +0200)
committerJan Kara <jack@suse.cz>
Tue, 28 Jul 2020 08:58:07 +0000 (10:58 +0200)
When merging name events, fsids of the two involved events have to
match. Otherwise we could merge events from two different filesystems
and thus effectively loose the second event.

Backporting note: Although the commit cacfb956d46e introducing this bug
was merged for 5.7, the relevant code didn't get used in the end until
7e8283af6ede ("fanotify: report parent fid + name + child fid") which
will be merged with this patch. So there's no need for backporting this.

Fixes: cacfb956d46e ("fanotify: record name info for FAN_DIR_MODIFY event")
Reported-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/notify/fanotify/fanotify.c

index bd9e88e889ea05fbab07aa44c3f06b98335c63b9..c942910a864967659756bd06c67f97866d0dc02e 100644 (file)
@@ -82,6 +82,9 @@ static bool fanotify_name_event_equal(struct fanotify_name_event *fne1,
        if (!info1->dir_fh_totlen)
                return false;
 
+       if (!fanotify_fsid_equal(&fne1->fsid, &fne2->fsid))
+               return false;
+
        return fanotify_info_equal(info1, info2);
 }