CC: [email protected]
CC: [email protected]
TO: Christoph Hellwig <[email protected]>
CC: Robin Murphy <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   43cb5d49a99b3ecd9fef9826899aac948c3048da
commit: 7bc5c428a660d4d1bc95ba54bf4cb6bccf8c3029 dma-direct: remove 
__dma_to_phys
date:   9 months ago
:::::: branch date: 2 hours ago
:::::: commit date: 9 months ago
config: x86_64-randconfig-m001-20210612 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/xen/swiotlb-xen.c:315 xen_swiotlb_alloc_coherent() error: we previously 
assumed 'hwdev' could be null (see line 308)

vim +/hwdev +315 drivers/xen/swiotlb-xen.c

dceb1a6819ab2c Christoph Hellwig     2017-05-21  275  
dceb1a6819ab2c Christoph Hellwig     2017-05-21  276  static void *
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  277  
xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
baa676fcf8d555 Andrzej Pietrasiewicz 2012-03-27  278                       
dma_addr_t *dma_handle, gfp_t flags,
00085f1efa387a Krzysztof Kozlowski   2016-08-03  279                       
unsigned long attrs)
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  280  {
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  281    void *ret;
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  282    int order = 
get_order(size);
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  283    u64 dma_mask = 
DMA_BIT_MASK(32);
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  284    phys_addr_t phys;
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  285    dma_addr_t dev_addr;
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  286  
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  287    /*
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  288    * Ignore region 
specifiers - the kernel's ideas of
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  289    * pseudo-phys memory 
layout has nothing to do with the
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  290    * machine physical 
layout.  We can't allocate highmem
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  291    * because we can't 
return a pointer to it.
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  292    */
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  293    flags &= ~(__GFP_DMA | 
__GFP_HIGHMEM);
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  294  
7250f422da0480 Joe Jin               2018-10-16  295    /* Convert the size to 
actually allocated. */
7250f422da0480 Joe Jin               2018-10-16  296    size = 1UL << (order + 
XEN_PAGE_SHIFT);
7250f422da0480 Joe Jin               2018-10-16  297  
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  298    /* On ARM this function 
returns an ioremap'ped virtual address for
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  299     * which virt_to_phys 
doesn't return the corresponding physical
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  300     * address. In fact on 
ARM virt_to_phys only works for kernel direct
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  301     * mapped RAM memory. 
Also see comment below.
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  302     */
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  303    ret = 
xen_alloc_coherent_pages(hwdev, size, dma_handle, flags, attrs);
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  304  
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  305    if (!ret)
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  306            return ret;
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  307  
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 @308    if (hwdev && 
hwdev->coherent_dma_mask)
038d07a283d623 Christoph Hellwig     2018-03-19  309            dma_mask = 
hwdev->coherent_dma_mask;
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  310  
91ffe4ad534ab2 Stefano Stabellini    2020-07-10  311    /* At this point 
dma_handle is the dma address, next we are
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  312     * going to set it to 
the machine address.
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  313     * Do not use 
virt_to_phys(ret) because on ARM it doesn't correspond
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  314     * to *dma_handle. */
91ffe4ad534ab2 Stefano Stabellini    2020-07-10 @315    phys = 
dma_to_phys(hwdev, *dma_handle);
91ffe4ad534ab2 Stefano Stabellini    2020-07-10  316    dev_addr = 
xen_phys_to_dma(hwdev, phys);
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  317    if (((dev_addr + size - 
1 <= dma_mask)) &&
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  318        
!range_straddles_page_boundary(phys, size))
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  319            *dma_handle = 
dev_addr;
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  320    else {
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  321            if 
(xen_create_contiguous_region(phys, order,
69908907b02efe Stefano Stabellini    2013-10-09  322                            
                 fls64(dma_mask), dma_handle) != 0) {
1b65c4e5a9af1a Stefano Stabellini    2013-10-10  323                    
xen_free_coherent_pages(hwdev, size, ret, (dma_addr_t)phys, attrs);
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  324                    return 
NULL;
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  325            }
91ffe4ad534ab2 Stefano Stabellini    2020-07-10  326            *dma_handle = 
phys_to_dma(hwdev, *dma_handle);
b877ac9815a8fe Juergen Gross         2019-06-14  327            
SetPageXenRemapped(virt_to_page(ret));
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  328    }
6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25  329    memset(ret, 0, size);
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  330    return ret;
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  331  }
b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11  332  

:::::: The code at line 315 was first introduced by commit
:::::: 91ffe4ad534ab2262cbcfb339c5ae190c7ac0e7c swiotlb-xen: introduce 
phys_to_dma/dma_to_phys translations

:::::: TO: Stefano Stabellini <[email protected]>
:::::: CC: Juergen Gross <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to