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