lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202403210204.LPPBJMhf-lkp@intel.com>
Date: Thu, 21 Mar 2024 02:38:15 +0800
From: kernel test robot <lkp@...el.com>
To: Dave Chinner <dchinner@...hat.com>
Cc: oe-kbuild-all@...ts.linux.dev, linux-kernel@...r.kernel.org,
	Chandan Babu R <chandanbabu@...nel.org>,
	"Darrick J. Wong" <djwong@...nel.org>
Subject: fs/xfs/libxfs/xfs_attr_leaf.c:1061:13-20: WARNING opportunity for
 kmemdup

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a4145ce1e7bc247fd6f2846e8699473448717b37
commit: f078d4ea827607867d42fb3b2ef907caf86ce49d xfs: convert kmem_alloc() to kmalloc()
date:   5 weeks ago
config: x86_64-randconfig-104-20240320 (https://download.01.org/0day-ci/archive/20240321/202403210204.LPPBJMhf-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)

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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202403210204.LPPBJMhf-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> fs/xfs/libxfs/xfs_attr_leaf.c:1061:13-20: WARNING opportunity for kmemdup

vim +1061 fs/xfs/libxfs/xfs_attr_leaf.c

  1039	
  1040	/*
  1041	 * Convert a leaf attribute list to shortform attribute list
  1042	 */
  1043	int
  1044	xfs_attr3_leaf_to_shortform(
  1045		struct xfs_buf		*bp,
  1046		struct xfs_da_args	*args,
  1047		int			forkoff)
  1048	{
  1049		struct xfs_attr_leafblock *leaf;
  1050		struct xfs_attr3_icleaf_hdr ichdr;
  1051		struct xfs_attr_leaf_entry *entry;
  1052		struct xfs_attr_leaf_name_local *name_loc;
  1053		struct xfs_da_args	nargs;
  1054		struct xfs_inode	*dp = args->dp;
  1055		char			*tmpbuffer;
  1056		int			error;
  1057		int			i;
  1058	
  1059		trace_xfs_attr_leaf_to_sf(args);
  1060	
> 1061		tmpbuffer = kmalloc(args->geo->blksize, GFP_KERNEL | __GFP_NOFAIL);
  1062		if (!tmpbuffer)
  1063			return -ENOMEM;
  1064	
  1065		memcpy(tmpbuffer, bp->b_addr, args->geo->blksize);
  1066	
  1067		leaf = (xfs_attr_leafblock_t *)tmpbuffer;
  1068		xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf);
  1069		entry = xfs_attr3_leaf_entryp(leaf);
  1070	
  1071		/* XXX (dgc): buffer is about to be marked stale - why zero it? */
  1072		memset(bp->b_addr, 0, args->geo->blksize);
  1073	
  1074		/*
  1075		 * Clean out the prior contents of the attribute list.
  1076		 */
  1077		error = xfs_da_shrink_inode(args, 0, bp);
  1078		if (error)
  1079			goto out;
  1080	
  1081		if (forkoff == -1) {
  1082			/*
  1083			 * Don't remove the attr fork if this operation is the first
  1084			 * part of a attr replace operations. We're going to add a new
  1085			 * attr immediately, so we need to keep the attr fork around in
  1086			 * this case.
  1087			 */
  1088			if (!(args->op_flags & XFS_DA_OP_REPLACE)) {
  1089				ASSERT(xfs_has_attr2(dp->i_mount));
  1090				ASSERT(dp->i_df.if_format != XFS_DINODE_FMT_BTREE);
  1091				xfs_attr_fork_remove(dp, args->trans);
  1092			}
  1093			goto out;
  1094		}
  1095	
  1096		xfs_attr_shortform_create(args);
  1097	
  1098		/*
  1099		 * Copy the attributes
  1100		 */
  1101		memset((char *)&nargs, 0, sizeof(nargs));
  1102		nargs.geo = args->geo;
  1103		nargs.dp = dp;
  1104		nargs.total = args->total;
  1105		nargs.whichfork = XFS_ATTR_FORK;
  1106		nargs.trans = args->trans;
  1107		nargs.op_flags = XFS_DA_OP_OKNOENT;
  1108	
  1109		for (i = 0; i < ichdr.count; entry++, i++) {
  1110			if (entry->flags & XFS_ATTR_INCOMPLETE)
  1111				continue;	/* don't copy partial entries */
  1112			if (!entry->nameidx)
  1113				continue;
  1114			ASSERT(entry->flags & XFS_ATTR_LOCAL);
  1115			name_loc = xfs_attr3_leaf_name_local(leaf, i);
  1116			nargs.name = name_loc->nameval;
  1117			nargs.namelen = name_loc->namelen;
  1118			nargs.value = &name_loc->nameval[nargs.namelen];
  1119			nargs.valuelen = be16_to_cpu(name_loc->valuelen);
  1120			nargs.hashval = be32_to_cpu(entry->hashval);
  1121			nargs.attr_filter = entry->flags & XFS_ATTR_NSP_ONDISK_MASK;
  1122			xfs_attr_shortform_add(&nargs, forkoff);
  1123		}
  1124		error = 0;
  1125	
  1126	out:
  1127		kmem_free(tmpbuffer);
  1128		return error;
  1129	}
  1130	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ