:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check warning: 
drivers/net/dsa/realtek/rtl8365mb.c:770:12: warning: dereference of NULL 'dp' 
[CWE-476] [-Wanalyzer-null-dereference]"
:::::: 

CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Luiz Angelo Daros de Luca <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   4b35035bcf80ddb47c0112c4fbd84a63a2836a18
commit: aac94001067da183455d6d37959892744fa01d9d net: dsa: realtek: add new 
mdio interface for drivers
date:   5 months ago
:::::: branch date: 2 days ago
:::::: commit date: 5 months ago
config: arm-randconfig-c002-20220617 
(https://download.01.org/0day-ci/archive/20220619/[email protected]/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0
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=aac94001067da183455d6d37959892744fa01d9d
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout aac94001067da183455d6d37959892744fa01d9d
        # save the config file
         ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

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


gcc-analyzer warnings: (new ones prefixed by >>)
   In file included from drivers/net/dsa/realtek/realtek.h:14,
                    from drivers/net/dsa/realtek/rtl8365mb.c:102:
   In function 'rtl8365mb_stats_setup':
   include/net/dsa.h:483:34: warning: dereference of NULL '0' [CWE-476] 
[-Wanalyzer-null-dereference]
     483 |         return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_UNUSED;
         |                ~~~~~~~~~~~~~~~~~~^~~~~~
     'rtl8365mb_stats_setup': events 1-2
       |
       |drivers/net/dsa/realtek/rtl8365mb.c:1434:23:
       | 1434 |         for (i = 0; i < priv->num_ports; i++) {
       |      |                     ~~^~~~~~~~~~~~~~~~~
       |      |                       |
       |      |                       (1) following 'true' branch...
       |......
       | 1437 |                 if (dsa_is_unused_port(priv->ds, i))
       |      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                     |
       |      |                     (2) ...to here
       |
     'rtl8365mb_stats_setup': event 3
       |
       |include/net/dsa.h:483:34:
       |  483 |         return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_UNUSED;
       |      |                ~~~~~~~~~~~~~~~~~~^~~~~~
       |      |                                  |
       |      |                                  (3) dereference of NULL 
'dsa_to_port(*priv.ds,  i)'
       |
   In function 'rtl8365mb_stats_teardown':
   include/net/dsa.h:483:34: warning: dereference of NULL '0' [CWE-476] 
[-Wanalyzer-null-dereference]
     483 |         return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_UNUSED;
         |                ~~~~~~~~~~~~~~~~~~^~~~~~
     'rtl8365mb_stats_teardown': events 1-2
       |
       |drivers/net/dsa/realtek/rtl8365mb.c:1455:23:
       | 1455 |         for (i = 0; i < priv->num_ports; i++) {
       |      |                     ~~^~~~~~~~~~~~~~~~~
       |      |                       |
       |      |                       (1) following 'true' branch...
       |......
       | 1458 |                 if (dsa_is_unused_port(priv->ds, i))
       |      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                     |
       |      |                     (2) ...to here
       |
     'rtl8365mb_stats_teardown': event 3
       |
       |include/net/dsa.h:483:34:
       |  483 |         return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_UNUSED;
       |      |                ~~~~~~~~~~~~~~~~~~^~~~~~
       |      |                                  |
       |      |                                  (3) dereference of NULL 
'dsa_to_port(*priv.ds,  i)'
       |
   In function 'rtl8365mb_phy_mode_supported':
   include/net/dsa.h:498:34: warning: dereference of NULL '0' [CWE-476] 
[-Wanalyzer-null-dereference]
     498 |         return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_USER;
         |                ~~~~~~~~~~~~~~~~~~^~~~~~
     'rtl8365mb_phy_mode_supported': event 1
       |
       |  498 |         return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_USER;
       |      |                ~~~~~~~~~~~~~~~~~~^~~~~~
       |      |                                  |
       |      |                                  (1) dereference of NULL 
'dsa_to_port(ds,  port)'
       |
   In function 'rtl8365mb_ext_config_rgmii':
>> drivers/net/dsa/realtek/rtl8365mb.c:770:12: warning: dereference of NULL 
>> 'dp' [CWE-476] [-Wanalyzer-null-dereference]
     770 |         dn = dp->dn;
         |         ~~~^~~~~~~~
     'rtl8365mb_ext_config_rgmii': events 1-3
       |
       |  762 |         if (port == priv->cpu_port) {
       |      |            ^
       |      |            |
       |      |            (1) following 'true' branch...
       |......
       |  769 |         dp = dsa_to_port(priv->ds, port);
       |      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |              |
       |      |              (2) ...to here
       |  770 |         dn = dp->dn;
       |      |         ~~~~~~~~~~~
       |      |            |
       |      |            (3) dereference of NULL 'dp'
       |

vim +/dp +770 drivers/net/dsa/realtek/rtl8365mb.c

4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  750  
f5f119077b1cd6 drivers/net/dsa/realtek/rtl8365mb.c Luiz Angelo Daros de Luca 
2022-01-28  751  static int rtl8365mb_ext_config_rgmii(struct realtek_priv 
*priv, int port,
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  752                                  phy_interface_t interface)
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  753  {
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  754    struct device_node *dn;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  755    struct dsa_port *dp;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  756    int tx_delay = 0;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  757    int rx_delay = 0;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  758    int ext_port;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  759    u32 val;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  760    int ret;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  761  
f5f119077b1cd6 drivers/net/dsa/realtek/rtl8365mb.c Luiz Angelo Daros de Luca 
2022-01-28  762    if (port == priv->cpu_port) {
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  763            ext_port = 1;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  764    } else {
f5f119077b1cd6 drivers/net/dsa/realtek/rtl8365mb.c Luiz Angelo Daros de Luca 
2022-01-28  765            dev_err(priv->dev, "only one EXT port is currently 
supported\n");
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  766            return -EINVAL;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  767    }
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  768  
f5f119077b1cd6 drivers/net/dsa/realtek/rtl8365mb.c Luiz Angelo Daros de Luca 
2022-01-28  769    dp = dsa_to_port(priv->ds, port);
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18 @770    dn = dp->dn;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  771  
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  772    /* Set the RGMII TX/RX delay
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  773     *
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  774     * The Realtek vendor driver indicates the following possible
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  775     * configuration settings:
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  776     *
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  777     *   TX delay:
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  778     *     0 = no delay, 1 = 2 ns delay
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  779     *   RX delay:
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  780     *     0 = no delay, 7 = maximum delay
ef136837aaf6f3 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-11-29  781     *     Each step is approximately 0.3 ns, so the maximum 
delay is about
ef136837aaf6f3 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-11-29  782     *     2.1 ns.
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  783     *
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  784     * The vendor driver also states that this must be 
configured *before*
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  785     * forcing the external interface into a particular mode, 
which is done
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  786     * in the rtl8365mb_phylink_mac_link_{up,down} functions.
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  787     *
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  788     * Only configure an RGMII TX (resp. RX) delay if the
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  789     * tx-internal-delay-ps (resp. rx-internal-delay-ps) OF 
property is
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  790     * specified. We ignore the detail of the RGMII interface 
mode
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  791     * (RGMII_{RXID, TXID, etc.}), as this is considered to be a 
PHY-only
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  792     * property.
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  793     */
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  794    if (!of_property_read_u32(dn, "tx-internal-delay-ps", &val)) 
{
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  795            val = val / 1000; /* convert to ns */
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  796  
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  797            if (val == 0 || val == 2)
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  798                    tx_delay = val / 2;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  799            else
f5f119077b1cd6 drivers/net/dsa/realtek/rtl8365mb.c Luiz Angelo Daros de Luca 
2022-01-28  800                    dev_warn(priv->dev,
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  801                             "EXT port TX delay must be 0 or 2 
ns\n");
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  802    }
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  803  
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  804    if (!of_property_read_u32(dn, "rx-internal-delay-ps", &val)) 
{
ef136837aaf6f3 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-11-29  805            val = DIV_ROUND_CLOSEST(val, 300); /* convert to 0.3 
ns step */
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  806  
ef136837aaf6f3 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-11-29  807            if (val <= 7)
ef136837aaf6f3 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-11-29  808                    rx_delay = val;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  809            else
f5f119077b1cd6 drivers/net/dsa/realtek/rtl8365mb.c Luiz Angelo Daros de Luca 
2022-01-28  810                    dev_warn(priv->dev,
ef136837aaf6f3 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-11-29  811                             "EXT port RX delay must be 0 to 2.1 
ns\n");
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  812    }
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  813  
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  814    ret = regmap_update_bits(
f5f119077b1cd6 drivers/net/dsa/realtek/rtl8365mb.c Luiz Angelo Daros de Luca 
2022-01-28  815            priv->map, RTL8365MB_EXT_RGMXF_REG(ext_port),
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  816            RTL8365MB_EXT_RGMXF_TXDELAY_MASK |
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  817                    RTL8365MB_EXT_RGMXF_RXDELAY_MASK,
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  818            FIELD_PREP(RTL8365MB_EXT_RGMXF_TXDELAY_MASK, 
tx_delay) |
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  819                    FIELD_PREP(RTL8365MB_EXT_RGMXF_RXDELAY_MASK, 
rx_delay));
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  820    if (ret)
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  821            return ret;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  822  
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  823    ret = regmap_update_bits(
f5f119077b1cd6 drivers/net/dsa/realtek/rtl8365mb.c Luiz Angelo Daros de Luca 
2022-01-28  824            priv->map, 
RTL8365MB_DIGITAL_INTERFACE_SELECT_REG(ext_port),
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  825            
RTL8365MB_DIGITAL_INTERFACE_SELECT_MODE_MASK(ext_port),
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  826            RTL8365MB_EXT_PORT_MODE_RGMII
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  827                    << 
RTL8365MB_DIGITAL_INTERFACE_SELECT_MODE_OFFSET(
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  828                               ext_port));
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  829    if (ret)
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  830            return ret;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  831  
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  832    return 0;
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  833  }
4af2950c50c863 drivers/net/dsa/rtl8365mb.c         Alvin Šipraga             
2021-10-18  834  

:::::: The code at line 770 was first introduced by commit
:::::: 4af2950c50c8634ed2865cf81e607034f78b84aa net: dsa: realtek-smi: add 
rtl8365mb subdriver for RTL8365MB-VC

:::::: TO: Alvin Šipraga <[email protected]>
:::::: CC: David S. Miller <[email protected]>

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

Reply via email to