:::::: :::::: 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]
