CC: [email protected] BCC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Tianyu Lan <[email protected]>
Hi Tianyu, [FYI, it's a private test report for your RFC patch.] [auto build test WARNING on next-20220429] [cannot apply to linus/master v5.18-rc5 v5.18-rc4 v5.18-rc3 v5.18-rc5] [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] url: https://github.com/intel-lab-lkp/linux/commits/Tianyu-Lan/swiotlb-Add-child-io-tlb-mem-support/20220502-205700 base: 5469f0c06732a077c70a759a81f2a1f00b277694 :::::: branch date: 7 hours ago :::::: commit date: 7 hours ago config: i386-randconfig-c001 (https://download.01.org/0day-ci/archive/20220503/[email protected]/config) compiler: gcc-11 (Debian 11.2.0-20) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Julia Lawall <[email protected]> cocci warnings: (new ones prefixed by >>) >> kernel/dma/swiotlb.c:1024:20-23: ERROR: reference preceded by free on line >> 1022 vim +1024 kernel/dma/swiotlb.c 3349f5b007cd7ec Tianyu Lan 2022-05-02 966 3349f5b007cd7ec Tianyu Lan 2022-05-02 967 /* 3349f5b007cd7ec Tianyu Lan 2022-05-02 968 * swiotlb_device_allocate - Allocate bounce buffer fo device from 3349f5b007cd7ec Tianyu Lan 2022-05-02 969 * default io tlb pool. The allocation size should be aligned with 3349f5b007cd7ec Tianyu Lan 2022-05-02 970 * IO_TLB_BLOCK_UNIT. 3349f5b007cd7ec Tianyu Lan 2022-05-02 971 */ 3349f5b007cd7ec Tianyu Lan 2022-05-02 972 int swiotlb_device_allocate(struct device *dev, 3349f5b007cd7ec Tianyu Lan 2022-05-02 973 unsigned int queue_num, 3349f5b007cd7ec Tianyu Lan 2022-05-02 974 unsigned long size) 3349f5b007cd7ec Tianyu Lan 2022-05-02 975 { 3349f5b007cd7ec Tianyu Lan 2022-05-02 976 struct io_tlb_mem *mem, *parent_mem = dev->dma_io_tlb_mem; 3349f5b007cd7ec Tianyu Lan 2022-05-02 977 unsigned long nslabs = ALIGN(size >> IO_TLB_SHIFT, IO_TLB_BLOCKSIZE); 3349f5b007cd7ec Tianyu Lan 2022-05-02 978 struct page *page; 3349f5b007cd7ec Tianyu Lan 2022-05-02 979 int ret = -ENOMEM; 3349f5b007cd7ec Tianyu Lan 2022-05-02 980 3349f5b007cd7ec Tianyu Lan 2022-05-02 981 page = swiotlb_alloc_block(parent_mem, nslabs / IO_TLB_BLOCKSIZE); 3349f5b007cd7ec Tianyu Lan 2022-05-02 982 if (!page) 3349f5b007cd7ec Tianyu Lan 2022-05-02 983 return -ENOMEM; 3349f5b007cd7ec Tianyu Lan 2022-05-02 984 3349f5b007cd7ec Tianyu Lan 2022-05-02 985 mem = kzalloc(sizeof(*mem), GFP_KERNEL); 3349f5b007cd7ec Tianyu Lan 2022-05-02 986 if (!mem) 3349f5b007cd7ec Tianyu Lan 2022-05-02 987 goto error_mem; 3349f5b007cd7ec Tianyu Lan 2022-05-02 988 3349f5b007cd7ec Tianyu Lan 2022-05-02 989 mem->slots = kzalloc(array_size(sizeof(*mem->slots), nslabs), 3349f5b007cd7ec Tianyu Lan 2022-05-02 990 GFP_KERNEL); 3349f5b007cd7ec Tianyu Lan 2022-05-02 991 if (!mem->slots) 3349f5b007cd7ec Tianyu Lan 2022-05-02 992 goto error_slots; 3349f5b007cd7ec Tianyu Lan 2022-05-02 993 3349f5b007cd7ec Tianyu Lan 2022-05-02 994 mem->block = kcalloc(nslabs / IO_TLB_BLOCKSIZE, 3349f5b007cd7ec Tianyu Lan 2022-05-02 995 sizeof(struct io_tlb_block), 3349f5b007cd7ec Tianyu Lan 2022-05-02 996 GFP_KERNEL); 3349f5b007cd7ec Tianyu Lan 2022-05-02 997 if (!mem->block) 3349f5b007cd7ec Tianyu Lan 2022-05-02 998 goto error_block; 3349f5b007cd7ec Tianyu Lan 2022-05-02 999 3349f5b007cd7ec Tianyu Lan 2022-05-02 1000 mem->num_child = queue_num; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1001 mem->child = kcalloc(queue_num, 3349f5b007cd7ec Tianyu Lan 2022-05-02 1002 sizeof(struct io_tlb_mem), 3349f5b007cd7ec Tianyu Lan 2022-05-02 1003 GFP_KERNEL); 3349f5b007cd7ec Tianyu Lan 2022-05-02 1004 if (!mem->child) 3349f5b007cd7ec Tianyu Lan 2022-05-02 1005 goto error_child; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1006 3349f5b007cd7ec Tianyu Lan 2022-05-02 1007 3349f5b007cd7ec Tianyu Lan 2022-05-02 1008 swiotlb_init_io_tlb_mem(mem, page_to_phys(page), nslabs, true); 3349f5b007cd7ec Tianyu Lan 2022-05-02 1009 mem->force_bounce = true; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1010 mem->for_alloc = true; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1011 3349f5b007cd7ec Tianyu Lan 2022-05-02 1012 mem->vaddr = parent_mem->vaddr + page_to_phys(page) - parent_mem->start; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1013 dev->dma_io_tlb_mem->parent = parent_mem; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1014 dev->dma_io_tlb_mem = mem; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1015 return 0; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1016 3349f5b007cd7ec Tianyu Lan 2022-05-02 1017 error_child: 3349f5b007cd7ec Tianyu Lan 2022-05-02 1018 kfree(mem->block); 3349f5b007cd7ec Tianyu Lan 2022-05-02 1019 error_block: 3349f5b007cd7ec Tianyu Lan 2022-05-02 1020 kfree(mem->slots); 3349f5b007cd7ec Tianyu Lan 2022-05-02 1021 error_slots: 3349f5b007cd7ec Tianyu Lan 2022-05-02 @1022 kfree(mem); 3349f5b007cd7ec Tianyu Lan 2022-05-02 1023 error_mem: 3349f5b007cd7ec Tianyu Lan 2022-05-02 @1024 swiotlb_free_block(mem, page_to_phys(page), nslabs / IO_TLB_BLOCKSIZE); 3349f5b007cd7ec Tianyu Lan 2022-05-02 1025 return ret; 3349f5b007cd7ec Tianyu Lan 2022-05-02 1026 } 3349f5b007cd7ec Tianyu Lan 2022-05-02 1027 EXPORT_SYMBOL_GPL(swiotlb_device_allocate); 3349f5b007cd7ec Tianyu Lan 2022-05-02 1028 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
