Re: fs/xfs/libxfs/xfs_dir2.c:336:15-22: WARNING opportunity for kmemdup

From: Darrick J. Wong
Date: Mon Mar 25 2024 - 09:52:45 EST


On Sat, Mar 23, 2024 at 11:08:59PM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: bfa8f18691ed2e978e4dd51190569c434f93e268
> commit: f078d4ea827607867d42fb3b2ef907caf86ce49d xfs: convert kmem_alloc() to kmalloc()
> date: 6 weeks ago
> config: x86_64-randconfig-103-20240323 (https://download.01.org/0day-ci/archive/20240323/202403232305.aLpp8AlJ-lkp@xxxxxxxxx/config)
> compiler: gcc-11 (Debian 11.3.0-12) 11.3.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>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202403232305.aLpp8AlJ-lkp@xxxxxxxxx/
>
> cocci warnings: (new ones prefixed by >>)
> >> fs/xfs/libxfs/xfs_dir2.c:336:15-22: WARNING opportunity for kmemdup

It occurred to me that this message isn't about a stray kmemdup that
could cause a WARN() message to get logged or anything like that; it's a
notice that we could collapse lines 336 and 340 into:

args->value = kmemdup(name, len, GFP_NOFS | __GFP_RETRY_MAYFAIL);

Anyone want to tackle that?

There's a second one you could tackle too:
https://lore.kernel.org/oe-kbuild-all/202403210204.LPPBJMhf-lkp@xxxxxxxxx/T/#u

--D

> vim +336 fs/xfs/libxfs/xfs_dir2.c
>
> 319
> 320 /*
> 321 * If doing a CI lookup and case-insensitive match, dup actual name into
> 322 * args.value. Return EEXIST for success (ie. name found) or an error.
> 323 */
> 324 int
> 325 xfs_dir_cilookup_result(
> 326 struct xfs_da_args *args,
> 327 const unsigned char *name,
> 328 int len)
> 329 {
> 330 if (args->cmpresult == XFS_CMP_DIFFERENT)
> 331 return -ENOENT;
> 332 if (args->cmpresult != XFS_CMP_CASE ||
> 333 !(args->op_flags & XFS_DA_OP_CILOOKUP))
> 334 return -EEXIST;
> 335
> > 336 args->value = kmalloc(len, GFP_NOFS | __GFP_RETRY_MAYFAIL);
> 337 if (!args->value)
> 338 return -ENOMEM;
> 339
> 340 memcpy(args->value, name, len);
> 341 args->valuelen = len;
> 342 return -EEXIST;
> 343 }
> 344
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki