[amir73il:fan_evictable 6/16] include/linux/fsnotify_backend.h:269:36: sparse: sparse: incorrect type in assignment (different base types)

From: kernel test robot
Date: Fri Apr 08 2022 - 10:01:10 EST


tree: https://github.com/amir73il/linux fan_evictable
head: bac37b7aec7f4dc6f4bc9c96356341245620fb5e
commit: cb71ef37a75afb4856098c9bf1b2e860b836e74e [6/16] fsnotify: create helpers for group mark_mutex lock
config: openrisc-randconfig-s032-20220408 (https://download.01.org/0day-ci/archive/20220408/202204082112.PhSsWj1q-lkp@xxxxxxxxx/config)
compiler: or1k-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/amir73il/linux/commit/cb71ef37a75afb4856098c9bf1b2e860b836e74e
git remote add amir73il https://github.com/amir73il/linux
git fetch --no-tags amir73il fan_evictable
git checkout cb71ef37a75afb4856098c9bf1b2e860b836e74e
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=openrisc SHELL=/bin/bash fs/notify/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)
fs/notify/mark.c:279:9: sparse: sparse: context imbalance in 'fsnotify_put_mark' - unexpected unlock
fs/notify/mark.c: note: in included file:
>> include/linux/fsnotify_backend.h:269:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted gfp_t [usertype] owner_flags @@ got unsigned int @@
include/linux/fsnotify_backend.h:269:36: sparse: expected restricted gfp_t [usertype] owner_flags
include/linux/fsnotify_backend.h:269:36: sparse: got unsigned int
>> include/linux/fsnotify_backend.h:275:44: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int flags @@ got restricted gfp_t [usertype] owner_flags @@
include/linux/fsnotify_backend.h:275:44: sparse: expected unsigned int flags
include/linux/fsnotify_backend.h:275:44: sparse: got restricted gfp_t [usertype] owner_flags
fs/notify/mark.c:545:39: sparse: sparse: context imbalance in 'fsnotify_grab_connector' - different lock contexts for basic block
fs/notify/mark.c:657:20: sparse: sparse: context imbalance in 'fsnotify_add_mark_list' - unexpected unlock
>> include/linux/fsnotify_backend.h:269:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted gfp_t [usertype] owner_flags @@ got unsigned int @@
include/linux/fsnotify_backend.h:269:36: sparse: expected restricted gfp_t [usertype] owner_flags
include/linux/fsnotify_backend.h:269:36: sparse: got unsigned int
>> include/linux/fsnotify_backend.h:275:44: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int flags @@ got restricted gfp_t [usertype] owner_flags @@
include/linux/fsnotify_backend.h:275:44: sparse: expected unsigned int flags
include/linux/fsnotify_backend.h:275:44: sparse: got restricted gfp_t [usertype] owner_flags
fs/notify/mark.c:738:25: sparse: sparse: context imbalance in 'fsnotify_find_mark' - unexpected unlock
>> include/linux/fsnotify_backend.h:269:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted gfp_t [usertype] owner_flags @@ got unsigned int @@
include/linux/fsnotify_backend.h:269:36: sparse: expected restricted gfp_t [usertype] owner_flags
include/linux/fsnotify_backend.h:269:36: sparse: got unsigned int
>> include/linux/fsnotify_backend.h:275:44: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int flags @@ got restricted gfp_t [usertype] owner_flags @@
include/linux/fsnotify_backend.h:275:44: sparse: expected unsigned int flags
include/linux/fsnotify_backend.h:275:44: sparse: got restricted gfp_t [usertype] owner_flags
>> include/linux/fsnotify_backend.h:269:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted gfp_t [usertype] owner_flags @@ got unsigned int @@
include/linux/fsnotify_backend.h:269:36: sparse: expected restricted gfp_t [usertype] owner_flags
include/linux/fsnotify_backend.h:269:36: sparse: got unsigned int
>> include/linux/fsnotify_backend.h:275:44: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int flags @@ got restricted gfp_t [usertype] owner_flags @@
include/linux/fsnotify_backend.h:275:44: sparse: expected unsigned int flags
include/linux/fsnotify_backend.h:275:44: sparse: got restricted gfp_t [usertype] owner_flags
>> include/linux/fsnotify_backend.h:275:44: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int flags @@ got restricted gfp_t [usertype] owner_flags @@
include/linux/fsnotify_backend.h:275:44: sparse: expected unsigned int flags
include/linux/fsnotify_backend.h:275:44: sparse: got restricted gfp_t [usertype] owner_flags
fs/notify/mark.c:812:17: sparse: sparse: context imbalance in 'fsnotify_destroy_marks' - unexpected unlock
--
fs/notify/fdinfo.c: note: in included file:
>> include/linux/fsnotify_backend.h:269:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted gfp_t [usertype] owner_flags @@ got unsigned int @@
include/linux/fsnotify_backend.h:269:36: sparse: expected restricted gfp_t [usertype] owner_flags
include/linux/fsnotify_backend.h:269:36: sparse: got unsigned int
>> include/linux/fsnotify_backend.h:275:44: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int flags @@ got restricted gfp_t [usertype] owner_flags @@
include/linux/fsnotify_backend.h:275:44: sparse: expected unsigned int flags
include/linux/fsnotify_backend.h:275:44: sparse: got restricted gfp_t [usertype] owner_flags

vim +269 include/linux/fsnotify_backend.h

260
261 /*
262 * These helpers are used to prevent deadlock when reclaiming inodes with
263 * evictable marks of the same group that is allocating a new mark.
264 */
265 static inline void fsnotify_group_lock(struct fsnotify_group *group)
266 {
267 mutex_lock(&group->mark_mutex);
268 if (FSNOTIFY_GROUP_FLAG(group, NOFS))
> 269 group->owner_flags = memalloc_nofs_save();
270 }
271
272 static inline void fsnotify_group_unlock(struct fsnotify_group *group)
273 {
274 if (FSNOTIFY_GROUP_FLAG(group, NOFS))
> 275 memalloc_nofs_restore(group->owner_flags);
276 mutex_unlock(&group->mark_mutex);
277 }
278

--
0-DAY CI Kernel Test Service
https://01.org/lkp