Re: [PATCH v2] xfs: Add new name to attri/d

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Allison,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on v6.0-rc3]
[also build test ERROR on linus/master next-20220830]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Allison-Henderson/xfs-Add-new-name-to-attri-d/20220830-053816
base:    b90cb1053190353cc30f0fef0ef1f378ccc063c5
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220831/202208310018.1wKCQHzH-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-5) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/68f33e68647f25b811773b237669cf26e6b43382
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Allison-Henderson/xfs-Add-new-name-to-attri-d/20220830-053816
        git checkout 68f33e68647f25b811773b237669cf26e6b43382
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash arch/x86/entry/vdso/ fs/xfs/

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

All errors (new ones prefixed by >>):

   fs/xfs/xfs_attr_item.c: In function 'xlog_recover_attri_commit_pass2':
   fs/xfs/xfs_attr_item.c:824:45: warning: passing argument 2 of 'xfs_attr_namecheck' makes integer from pointer without a cast [-Wint-conversion]
     824 |                 if (!xfs_attr_namecheck(mp, attr_nname,
         |                                             ^~~~~~~~~~
         |                                             |
         |                                             const void *
   In file included from fs/xfs/xfs_attr_item.c:22:
   fs/xfs/libxfs/xfs_attr.h:550:50: note: expected 'size_t' {aka 'long unsigned int'} but argument is of type 'const void *'
     550 | bool xfs_attr_namecheck(const void *name, size_t length);
         |                                           ~~~~~~~^~~~~~
>> fs/xfs/xfs_attr_item.c:824:22: error: too many arguments to function 'xfs_attr_namecheck'
     824 |                 if (!xfs_attr_namecheck(mp, attr_nname,
         |                      ^~~~~~~~~~~~~~~~~~
   In file included from fs/xfs/xfs_attr_item.c:22:
   fs/xfs/libxfs/xfs_attr.h:550:6: note: declared here
     550 | bool xfs_attr_namecheck(const void *name, size_t length);
         |      ^~~~~~~~~~~~~~~~~~


vim +/xfs_attr_namecheck +824 fs/xfs/xfs_attr_item.c

   756	
   757	STATIC int
   758	xlog_recover_attri_commit_pass2(
   759		struct xlog                     *log,
   760		struct list_head		*buffer_list,
   761		struct xlog_recover_item        *item,
   762		xfs_lsn_t                       lsn)
   763	{
   764		struct xfs_mount                *mp = log->l_mp;
   765		struct xfs_attri_log_item       *attrip;
   766		struct xfs_attri_log_format     *attri_formatp;
   767		struct xfs_attri_log_nameval	*nv;
   768		const void			*attr_value = NULL;
   769		const void			*attr_name;
   770		const void			*attr_nname = NULL;
   771		int				i = 0;
   772		int                             op, error = 0;
   773	
   774		if (item->ri_total == 0) {
   775			XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, mp);
   776			return -EFSCORRUPTED;
   777		}
   778	
   779		attri_formatp = item->ri_buf[i].i_addr;
   780		i++;
   781	
   782		op = attri_formatp->alfi_op_flags & XFS_ATTRI_OP_FLAGS_TYPE_MASK;
   783		switch (op) {
   784		case XFS_ATTRI_OP_FLAGS_SET:
   785		case XFS_ATTRI_OP_FLAGS_REPLACE:
   786			if (item->ri_total != 3)
   787				error = -EFSCORRUPTED;
   788			break;
   789		case XFS_ATTRI_OP_FLAGS_REMOVE:
   790			if (item->ri_total != 2)
   791				error = -EFSCORRUPTED;
   792			break;
   793		case XFS_ATTRI_OP_FLAGS_NVREPLACE:
   794			if (item->ri_total != 4)
   795				error = -EFSCORRUPTED;
   796			break;
   797		default:
   798			error = -EFSCORRUPTED;
   799		}
   800	
   801		if (error) {
   802			XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, mp);
   803			return error;
   804		}
   805	
   806		/* Validate xfs_attri_log_format before the large memory allocation */
   807		if (!xfs_attri_validate(mp, attri_formatp)) {
   808			XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, mp);
   809			return -EFSCORRUPTED;
   810		}
   811	
   812		attr_name = item->ri_buf[i].i_addr;
   813		i++;
   814	
   815		if (!xfs_attr_namecheck(attr_name, attri_formatp->alfi_name_len)) {
   816			XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, mp);
   817			return -EFSCORRUPTED;
   818		}
   819	
   820		if (attri_formatp->alfi_nname_len) {
   821			attr_nname = item->ri_buf[i].i_addr;
   822			i++;
   823	
 > 824			if (!xfs_attr_namecheck(mp, attr_nname,
   825					attri_formatp->alfi_nname_len,
   826					attri_formatp->alfi_attr_filter)) {
   827				XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, mp);
   828				return -EFSCORRUPTED;
   829			}
   830		}
   831	
   832		if (attri_formatp->alfi_value_len)
   833			attr_value = item->ri_buf[i].i_addr;
   834	
   835		/*
   836		 * Memory alloc failure will cause replay to abort.  We attach the
   837		 * name/value buffer to the recovered incore log item and drop our
   838		 * reference.
   839		 */
   840		nv = xfs_attri_log_nameval_alloc(attr_name,
   841				attri_formatp->alfi_name_len, attr_nname,
   842				attri_formatp->alfi_nname_len, attr_value,
   843				attri_formatp->alfi_value_len);
   844		if (!nv)
   845			return -ENOMEM;
   846	
   847		attrip = xfs_attri_init(mp, nv);
   848		error = xfs_attri_copy_format(&item->ri_buf[0], &attrip->attri_format);
   849		if (error)
   850			goto out;
   851	
   852		/*
   853		 * The ATTRI has two references. One for the ATTRD and one for ATTRI to
   854		 * ensure it makes it into the AIL. Insert the ATTRI into the AIL
   855		 * directly and drop the ATTRI reference. Note that
   856		 * xfs_trans_ail_update() drops the AIL lock.
   857		 */
   858		xfs_trans_ail_insert(log->l_ailp, &attrip->attri_item, lsn);
   859		xfs_attri_release(attrip);
   860		xfs_attri_log_nameval_put(nv);
   861		return 0;
   862	out:
   863		xfs_attri_item_free(attrip);
   864		xfs_attri_log_nameval_put(nv);
   865		return error;
   866	}
   867	

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



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux