CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Qing Zhang <[email protected]>
CC: Jiaxun Yang <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   2a987e65025e2b79c6d453b78cb5985ac6e5eb26
commit: 30bba69d7db40e732d6c0aa6d4890c60d717e314 stmmac: pci: Add dwmac support 
for Loongson
date:   6 months ago
:::::: branch date: 17 hours ago
:::::: commit date: 6 months ago
config: i386-randconfig-c001-20211130 
(https://download.01.org/0day-ci/archive/20211209/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
25eb7fa01d7ebbe67648ea03841cda55b4239ab2)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=30bba69d7db40e732d6c0aa6d4890c60d717e314
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 30bba69d7db40e732d6c0aa6d4890c60d717e314
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 
clang-analyzer 

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


clang-analyzer warnings: (new ones prefixed by >>)
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   9 warnings generated.
   Suppressed 9 warnings (9 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:76:6: warning: Branch 
condition evaluates to a garbage value 
[clang-analyzer-core.uninitialized.Branch]
           if (mdio) {
               ^~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:52:14: note: 'mdio' 
declared without an initial value
           int ret, i, mdio;
                       ^~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:55:7: note: Calling 
'dev_of_node'
           np = dev_of_node(&pdev->dev);
                ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/device.h:769:6: note: Left side of '||' is false
           if (!IS_ENABLED(CONFIG_OF) || !dev)
               ^
   include/linux/device.h:769:32: note: Assuming 'dev' is non-null, which 
participates in a condition later
           if (!IS_ENABLED(CONFIG_OF) || !dev)
                                         ^~~~
   include/linux/device.h:769:2: note: Taking false branch
           if (!IS_ENABLED(CONFIG_OF) || !dev)
           ^
   include/linux/device.h:771:2: note: Returning without writing to 
'dev->of_node', which participates in a condition later
           return dev->of_node;
           ^
   include/linux/device.h:771:2: note: Returning pointer, which participates in 
a condition later
           return dev->of_node;
           ^~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:55:7: note: Returning 
from 'dev_of_node'
           np = dev_of_node(&pdev->dev);
                ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:57:6: note: Assuming 
'np' is non-null
           if (!np) {
               ^~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:57:2: note: Taking 
false branch
           if (!np) {
           ^
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:62:6: note: Assuming 
the condition is false
           if (!of_device_is_compatible(np, "loongson, pci-gmac")) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:62:2: note: Taking 
false branch
           if (!of_device_is_compatible(np, "loongson, pci-gmac")) {
           ^
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:68:6: note: Assuming 
'plat' is non-null
           if (!plat)
               ^~~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:68:2: note: Taking 
false branch
           if (!plat)
           ^
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:71:6: note: Assuming 
field 'mdio_node' is null
           if (plat->mdio_node) {
               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:71:2: note: Taking 
false branch
           if (plat->mdio_node) {
           ^
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:76:6: note: Branch 
condition evaluates to a garbage value
           if (mdio) {
               ^~~~
>> drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:126:3: warning: Value 
>> stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = -ENODEV;
                   ^     ~~~~~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:126:3: note: Value 
stored to 'ret' is never read
                   ret = -ENODEV;
                   ^     ~~~~~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:138:3: warning: Value 
stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = -ENODEV;
                   ^     ~~~~~~~
   drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c:138:3: note: Value 
stored to 'ret' is never read
                   ret = -ENODEV;
                   ^     ~~~~~~~
   Suppressed 16 warnings (15 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   16 warnings generated.
   drivers/misc/altera-stapl/altera.c:463:24: warning: Array access (from 
variable 'proc_attributes') results in a null pointer dereference 
[clang-analyzer-core.NullDereference]
                                   proc_attributes[i] =
                                   ~~~~~~~~~~~~~~~    ^
   drivers/misc/altera-stapl/altera.c:229:2: note: 'proc_attributes' 
initialized to a null pointer value
           u8 *proc_attributes = NULL;
           ^~~~~~~~~~~~~~~~~~~
   drivers/misc/altera-stapl/altera.c:263:2: note: Assuming 'debug' is 0
           dprintk("%s\n", __func__);
           ^
   drivers/misc/altera-stapl/altera.c:31:6: note: expanded from macro 'dprintk'
           if (debug) { \
               ^~~~~
   drivers/misc/altera-stapl/altera.c:263:2: note: Taking false branch
           dprintk("%s\n", __func__);
           ^
   drivers/misc/altera-stapl/altera.c:31:2: note: expanded from macro 'dprintk'
           if (debug) { \
           ^
   drivers/misc/altera-stapl/altera.c:266:6: note: Assuming 'program_size' is > 
52
           if (program_size > 52L) {
               ^~~~~~~~~~~~~~~~~~
   drivers/misc/altera-stapl/altera.c:266:2: note: Taking true branch
           if (program_size > 52L) {
           ^
   drivers/misc/altera-stapl/altera.c:284:7: note: Assuming 'first_word' is not 
equal to 1245793536
           if ((first_word != 0x4A414D00L) && (first_word != 0x4A414D01L)) {
                ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/misc/altera-stapl/altera.c:284:6: note: Left side of '&&' is true
           if ((first_word != 0x4A414D00L) && (first_word != 0x4A414D01L)) {
               ^
   drivers/misc/altera-stapl/altera.c:284:38: note: Assuming 'first_word' is 
equal to 1245793537
           if ((first_word != 0x4A414D00L) && (first_word != 0x4A414D01L)) {
                                               ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/misc/altera-stapl/altera.c:284:2: note: Taking false branch
           if ((first_word != 0x4A414D00L) && (first_word != 0x4A414D01L)) {
           ^
   drivers/misc/altera-stapl/altera.c:290:6: note: Assuming 'sym_count' is <= 0
           if (sym_count <= 0)
               ^~~~~~~~~~~~~~
   drivers/misc/altera-stapl/altera.c:290:2: note: Taking true branch
           if (sym_count <= 0)
           ^
   drivers/misc/altera-stapl/altera.c:291:3: note: Control jumps to line 419
                   goto exit_done;
                   ^
   drivers/misc/altera-stapl/altera.c:419:6: note: 'status' is equal to 0
           if (status != 0)
               ^~~~~~
   drivers/misc/altera-stapl/altera.c:419:2: note: Taking false branch
           if (status != 0)
           ^
   drivers/misc/altera-stapl/altera.c:431:6: note: 'version' is > 0
           if (version > 0) {
               ^~~~~~~
   drivers/misc/altera-stapl/altera.c:431:2: note: Taking true branch
           if (version > 0) {
           ^
   drivers/misc/altera-stapl/altera.c:432:7: note: Assuming field 'action' is 
not equal to NULL
                   if (aconf->action == NULL) {
                       ^~~~~~~~~~~~~~~~~~~~~
   drivers/misc/altera-stapl/altera.c:432:3: note: Taking false branch
                   if (aconf->action == NULL) {
                   ^
   drivers/misc/altera-stapl/altera.c:437:17: note: Assuming 'i' is < 
'action_count'
                           for (i = 0; (i < action_count) && !action_found; 
++i) {
                                        ^~~~~~~~~~~~~~~~
   drivers/misc/altera-stapl/altera.c:437:16: note: Left side of '&&' is true
                           for (i = 0; (i < action_count) && !action_found; 
++i) {
                                       ^
   drivers/misc/altera-stapl/altera.c:437:4: note: Loop condition is true.  
Entering loop body
                           for (i = 0; (i < action_count) && !action_found; 
++i) {
                           ^
   drivers/misc/altera-stapl/altera.c:443:5: note: Taking true branch
                                   if (strncasecmp(aconf->action, name, 
strlen(name)) == 0) {
                                   ^
   drivers/misc/altera-stapl/altera.c:437:17: note: Assuming 'i' is >= 
'action_count'
                           for (i = 0; (i < action_count) && !action_found; 
++i) {

vim +/ret +126 drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c

30bba69d7db40e Qing Zhang 2021-06-18   47  
30bba69d7db40e Qing Zhang 2021-06-18   48  static int 
loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id *id)
30bba69d7db40e Qing Zhang 2021-06-18   49  {
30bba69d7db40e Qing Zhang 2021-06-18   50       struct plat_stmmacenet_data 
*plat;
30bba69d7db40e Qing Zhang 2021-06-18   51       struct stmmac_resources res;
30bba69d7db40e Qing Zhang 2021-06-18   52       int ret, i, mdio;
30bba69d7db40e Qing Zhang 2021-06-18   53       struct device_node *np;
30bba69d7db40e Qing Zhang 2021-06-18   54  
30bba69d7db40e Qing Zhang 2021-06-18   55       np = dev_of_node(&pdev->dev);
30bba69d7db40e Qing Zhang 2021-06-18   56  
30bba69d7db40e Qing Zhang 2021-06-18   57       if (!np) {
30bba69d7db40e Qing Zhang 2021-06-18   58               
pr_info("dwmac_loongson_pci: No OF node\n");
30bba69d7db40e Qing Zhang 2021-06-18   59               return -ENODEV;
30bba69d7db40e Qing Zhang 2021-06-18   60       }
30bba69d7db40e Qing Zhang 2021-06-18   61  
30bba69d7db40e Qing Zhang 2021-06-18   62       if 
(!of_device_is_compatible(np, "loongson, pci-gmac")) {
30bba69d7db40e Qing Zhang 2021-06-18   63               
pr_info("dwmac_loongson_pci: Incompatible OF node\n");
30bba69d7db40e Qing Zhang 2021-06-18   64               return -ENODEV;
30bba69d7db40e Qing Zhang 2021-06-18   65       }
30bba69d7db40e Qing Zhang 2021-06-18   66  
30bba69d7db40e Qing Zhang 2021-06-18   67       plat = devm_kzalloc(&pdev->dev, 
sizeof(*plat), GFP_KERNEL);
30bba69d7db40e Qing Zhang 2021-06-18   68       if (!plat)
30bba69d7db40e Qing Zhang 2021-06-18   69               return -ENOMEM;
30bba69d7db40e Qing Zhang 2021-06-18   70  
30bba69d7db40e Qing Zhang 2021-06-18   71       if (plat->mdio_node) {
30bba69d7db40e Qing Zhang 2021-06-18   72               dev_err(&pdev->dev, 
"Found MDIO subnode\n");
30bba69d7db40e Qing Zhang 2021-06-18   73               mdio = true;
30bba69d7db40e Qing Zhang 2021-06-18   74       }
30bba69d7db40e Qing Zhang 2021-06-18   75  
30bba69d7db40e Qing Zhang 2021-06-18   76       if (mdio) {
30bba69d7db40e Qing Zhang 2021-06-18   77               plat->mdio_bus_data = 
devm_kzalloc(&pdev->dev,
30bba69d7db40e Qing Zhang 2021-06-18   78                                       
           sizeof(*plat->mdio_bus_data),
30bba69d7db40e Qing Zhang 2021-06-18   79                                       
           GFP_KERNEL);
30bba69d7db40e Qing Zhang 2021-06-18   80               if 
(!plat->mdio_bus_data)
30bba69d7db40e Qing Zhang 2021-06-18   81                       return -ENOMEM;
30bba69d7db40e Qing Zhang 2021-06-18   82               
plat->mdio_bus_data->needs_reset = true;
30bba69d7db40e Qing Zhang 2021-06-18   83       }
30bba69d7db40e Qing Zhang 2021-06-18   84  
30bba69d7db40e Qing Zhang 2021-06-18   85       plat->dma_cfg = 
devm_kzalloc(&pdev->dev, sizeof(*plat->dma_cfg), GFP_KERNEL);
30bba69d7db40e Qing Zhang 2021-06-18   86       if (!plat->dma_cfg)
30bba69d7db40e Qing Zhang 2021-06-18   87               return -ENOMEM;
30bba69d7db40e Qing Zhang 2021-06-18   88  
30bba69d7db40e Qing Zhang 2021-06-18   89       /* Enable pci device */
30bba69d7db40e Qing Zhang 2021-06-18   90       ret = pci_enable_device(pdev);
30bba69d7db40e Qing Zhang 2021-06-18   91       if (ret) {
30bba69d7db40e Qing Zhang 2021-06-18   92               dev_err(&pdev->dev, 
"%s: ERROR: failed to enable device\n", __func__);
30bba69d7db40e Qing Zhang 2021-06-18   93               return ret;
30bba69d7db40e Qing Zhang 2021-06-18   94       }
30bba69d7db40e Qing Zhang 2021-06-18   95  
30bba69d7db40e Qing Zhang 2021-06-18   96       /* Get the base address of 
device */
30bba69d7db40e Qing Zhang 2021-06-18   97       for (i = 0; i < 
PCI_STD_NUM_BARS; i++) {
30bba69d7db40e Qing Zhang 2021-06-18   98               if 
(pci_resource_len(pdev, i) == 0)
30bba69d7db40e Qing Zhang 2021-06-18   99                       continue;
30bba69d7db40e Qing Zhang 2021-06-18  100               ret = 
pcim_iomap_regions(pdev, BIT(0), pci_name(pdev));
30bba69d7db40e Qing Zhang 2021-06-18  101               if (ret)
30bba69d7db40e Qing Zhang 2021-06-18  102                       return ret;
30bba69d7db40e Qing Zhang 2021-06-18  103               break;
30bba69d7db40e Qing Zhang 2021-06-18  104       }
30bba69d7db40e Qing Zhang 2021-06-18  105  
30bba69d7db40e Qing Zhang 2021-06-18  106       plat->bus_id = 
of_alias_get_id(np, "ethernet");
30bba69d7db40e Qing Zhang 2021-06-18  107       if (plat->bus_id < 0)
30bba69d7db40e Qing Zhang 2021-06-18  108               plat->bus_id = 
pci_dev_id(pdev);
30bba69d7db40e Qing Zhang 2021-06-18  109  
30bba69d7db40e Qing Zhang 2021-06-18  110       plat->phy_interface = 
device_get_phy_mode(&pdev->dev);
30bba69d7db40e Qing Zhang 2021-06-18  111       if (plat->phy_interface < 0)
30bba69d7db40e Qing Zhang 2021-06-18  112               dev_err(&pdev->dev, 
"phy_mode not found\n");
30bba69d7db40e Qing Zhang 2021-06-18  113  
30bba69d7db40e Qing Zhang 2021-06-18  114       plat->interface = 
PHY_INTERFACE_MODE_GMII;
30bba69d7db40e Qing Zhang 2021-06-18  115  
30bba69d7db40e Qing Zhang 2021-06-18  116       pci_set_master(pdev);
30bba69d7db40e Qing Zhang 2021-06-18  117  
30bba69d7db40e Qing Zhang 2021-06-18  118       loongson_default_data(plat);
30bba69d7db40e Qing Zhang 2021-06-18  119       pci_enable_msi(pdev);
30bba69d7db40e Qing Zhang 2021-06-18  120       memset(&res, 0, sizeof(res));
30bba69d7db40e Qing Zhang 2021-06-18  121       res.addr = 
pcim_iomap_table(pdev)[0];
30bba69d7db40e Qing Zhang 2021-06-18  122  
30bba69d7db40e Qing Zhang 2021-06-18  123       res.irq = of_irq_get_byname(np, 
"macirq");
30bba69d7db40e Qing Zhang 2021-06-18  124       if (res.irq < 0) {
30bba69d7db40e Qing Zhang 2021-06-18  125               dev_err(&pdev->dev, 
"IRQ macirq not found\n");
30bba69d7db40e Qing Zhang 2021-06-18 @126               ret = -ENODEV;
30bba69d7db40e Qing Zhang 2021-06-18  127       }
30bba69d7db40e Qing Zhang 2021-06-18  128  
30bba69d7db40e Qing Zhang 2021-06-18  129       res.wol_irq = 
of_irq_get_byname(np, "eth_wake_irq");
30bba69d7db40e Qing Zhang 2021-06-18  130       if (res.wol_irq < 0) {
30bba69d7db40e Qing Zhang 2021-06-18  131               dev_info(&pdev->dev, 
"IRQ eth_wake_irq not found, using macirq\n");
30bba69d7db40e Qing Zhang 2021-06-18  132               res.wol_irq = res.irq;
30bba69d7db40e Qing Zhang 2021-06-18  133       }
30bba69d7db40e Qing Zhang 2021-06-18  134  
30bba69d7db40e Qing Zhang 2021-06-18  135       res.lpi_irq = 
of_irq_get_byname(np, "eth_lpi");
30bba69d7db40e Qing Zhang 2021-06-18  136       if (res.lpi_irq < 0) {
30bba69d7db40e Qing Zhang 2021-06-18  137               dev_err(&pdev->dev, 
"IRQ eth_lpi not found\n");
30bba69d7db40e Qing Zhang 2021-06-18  138               ret = -ENODEV;
30bba69d7db40e Qing Zhang 2021-06-18  139       }
30bba69d7db40e Qing Zhang 2021-06-18  140  
30bba69d7db40e Qing Zhang 2021-06-18  141       return 
stmmac_dvr_probe(&pdev->dev, plat, &res);
30bba69d7db40e Qing Zhang 2021-06-18  142  }
30bba69d7db40e Qing Zhang 2021-06-18  143  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to