Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fanotify: Fix the checks in fanotify_fsid_equal

Clang warns:

fs/notify/fanotify/fanotify.c:28:23: warning: self-comparison always
evaluates to true [-Wtautological-compare]
return fsid1->val[0] == fsid1->val[0] && fsid2->val[1] == fsid2->val[1];
^
fs/notify/fanotify/fanotify.c:28:57: warning: self-comparison always
evaluates to true [-Wtautological-compare]
return fsid1->val[0] == fsid1->val[0] && fsid2->val[1] == fsid2->val[1];
^
2 warnings generated.

The intention was clearly to compare val[0] and val[1] in the two
different fsid structs. Fix it otherwise this function always returns
true.

Fixes: afc894c784c8 ("fanotify: Store fanotify handles differently")
Link: https://github.com/ClangBuiltLinux/linux/issues/952
Link: https://lore.kernel.org/r/20200327171030.30625-1-natechancellor@gmail.com
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Jan Kara <jack@suse.cz>

authored by

Nathan Chancellor and committed by
Jan Kara
6def1a1d 44d705b0

+1 -1
+1 -1
fs/notify/fanotify/fanotify.c
··· 25 25 static inline bool fanotify_fsid_equal(__kernel_fsid_t *fsid1, 26 26 __kernel_fsid_t *fsid2) 27 27 { 28 - return fsid1->val[0] == fsid1->val[0] && fsid2->val[1] == fsid2->val[1]; 28 + return fsid1->val[0] == fsid2->val[0] && fsid1->val[1] == fsid2->val[1]; 29 29 } 30 30 31 31 static bool fanotify_fh_equal(struct fanotify_fh *fh1,