Hi Julian, kernel test robot noticed the following build warnings: https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Julian-Sun/xfs-remove-unnecessary-checks-for-__GFP_NOFAIL-allocation/20250228-162815 base: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next patch link: https://lore.kernel.org/r/20250228082622.2638686-2-sunjunchao2870%40gmail.com patch subject: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation. config: sh-randconfig-r073-20250307 (https://download.01.org/0day-ci/archive/20250307/202503072035.d6QqiZWT-lkp@xxxxxxxxx/config) compiler: sh4-linux-gcc (GCC) 14.2.0 If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> | Closes: https://lore.kernel.org/r/202503072035.d6QqiZWT-lkp@xxxxxxxxx/ New smatch warnings: fs/xfs/xfs_mru_cache.c:360 xfs_mru_cache_create() warn: variable dereferenced before check 'mru' (see line 338) vim +/mru +360 fs/xfs/xfs_mru_cache.c 2a82b8be8a8dac David Chinner 2007-07-11 314 int 2a82b8be8a8dac David Chinner 2007-07-11 315 xfs_mru_cache_create( 22328d712dd7fd Christoph Hellwig 2014-04-23 316 struct xfs_mru_cache **mrup, 7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 317 void *data, 2a82b8be8a8dac David Chinner 2007-07-11 318 unsigned int lifetime_ms, 2a82b8be8a8dac David Chinner 2007-07-11 319 unsigned int grp_count, 2a82b8be8a8dac David Chinner 2007-07-11 320 xfs_mru_cache_free_func_t free_func) 2a82b8be8a8dac David Chinner 2007-07-11 321 { 22328d712dd7fd Christoph Hellwig 2014-04-23 322 struct xfs_mru_cache *mru = NULL; 2a82b8be8a8dac David Chinner 2007-07-11 323 int err = 0, grp; 2a82b8be8a8dac David Chinner 2007-07-11 324 unsigned int grp_time; 2a82b8be8a8dac David Chinner 2007-07-11 325 2a82b8be8a8dac David Chinner 2007-07-11 326 if (mrup) 2a82b8be8a8dac David Chinner 2007-07-11 327 *mrup = NULL; 2a82b8be8a8dac David Chinner 2007-07-11 328 2a82b8be8a8dac David Chinner 2007-07-11 329 if (!mrup || !grp_count || !lifetime_ms || !free_func) 2451337dd04390 Dave Chinner 2014-06-25 330 return -EINVAL; 2a82b8be8a8dac David Chinner 2007-07-11 331 2a82b8be8a8dac David Chinner 2007-07-11 332 if (!(grp_time = msecs_to_jiffies(lifetime_ms) / grp_count)) 2451337dd04390 Dave Chinner 2014-06-25 333 return -EINVAL; 2a82b8be8a8dac David Chinner 2007-07-11 334 10634530f7ba94 Dave Chinner 2024-01-16 335 mru = kzalloc(sizeof(*mru), GFP_KERNEL | __GFP_NOFAIL); 2a82b8be8a8dac David Chinner 2007-07-11 336 2a82b8be8a8dac David Chinner 2007-07-11 337 /* An extra list is needed to avoid reaping up to a grp_time early. */ 2a82b8be8a8dac David Chinner 2007-07-11 @338 mru->grp_count = grp_count + 1; 10634530f7ba94 Dave Chinner 2024-01-16 339 mru->lists = kzalloc(mru->grp_count * sizeof(*mru->lists), 10634530f7ba94 Dave Chinner 2024-01-16 340 GFP_KERNEL | __GFP_NOFAIL); 2a82b8be8a8dac David Chinner 2007-07-11 341 2a82b8be8a8dac David Chinner 2007-07-11 342 for (grp = 0; grp < mru->grp_count; grp++) 2a82b8be8a8dac David Chinner 2007-07-11 343 INIT_LIST_HEAD(mru->lists + grp); 2a82b8be8a8dac David Chinner 2007-07-11 344 2a82b8be8a8dac David Chinner 2007-07-11 345 /* 2a82b8be8a8dac David Chinner 2007-07-11 346 * We use GFP_KERNEL radix tree preload and do inserts under a 2a82b8be8a8dac David Chinner 2007-07-11 347 * spinlock so GFP_ATOMIC is appropriate for the radix tree itself. 2a82b8be8a8dac David Chinner 2007-07-11 348 */ 2a82b8be8a8dac David Chinner 2007-07-11 349 INIT_RADIX_TREE(&mru->store, GFP_ATOMIC); 2a82b8be8a8dac David Chinner 2007-07-11 350 INIT_LIST_HEAD(&mru->reap_list); 007c61c68640ea Eric Sandeen 2007-10-11 351 spin_lock_init(&mru->lock); 2a82b8be8a8dac David Chinner 2007-07-11 352 INIT_DELAYED_WORK(&mru->work, _xfs_mru_cache_reap); 2a82b8be8a8dac David Chinner 2007-07-11 353 2a82b8be8a8dac David Chinner 2007-07-11 354 mru->grp_time = grp_time; 2a82b8be8a8dac David Chinner 2007-07-11 355 mru->free_func = free_func; 7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 356 mru->data = data; 2a82b8be8a8dac David Chinner 2007-07-11 357 *mrup = mru; 2a82b8be8a8dac David Chinner 2007-07-11 358 2a82b8be8a8dac David Chinner 2007-07-11 359 exit: 2a82b8be8a8dac David Chinner 2007-07-11 @360 if (err && mru && mru->lists) ^^^ d4c75a1b40cd03 Dave Chinner 2024-01-16 361 kfree(mru->lists); 2a82b8be8a8dac David Chinner 2007-07-11 362 if (err && mru) ^^^ I normally wouldn't hit forward on this zero-day bot thing because it's obviously harmless. But since you're removing NULL checks you could remove these two too if you want. d4c75a1b40cd03 Dave Chinner 2024-01-16 363 kfree(mru); 2a82b8be8a8dac David Chinner 2007-07-11 364 2a82b8be8a8dac David Chinner 2007-07-11 365 return err; 2a82b8be8a8dac David Chinner 2007-07-11 366 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki