CC: [email protected] BCC: [email protected] CC: [email protected] TO: Arun Ramadoss <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: b00ed48bb0a7c295facf9036135a573a5cdbe7de commit: 198b34783ab10d0c58bf2ae2574e7fc704129058 net: dsa: microchip: move port memory allocation to ksz_common date: 11 days ago :::::: branch date: 62 minutes ago :::::: commit date: 11 days ago config: arc-randconfig-m031-20220524 (https://download.01.org/0day-ci/archive/20220530/[email protected]/config) compiler: arceb-elf-gcc (GCC) 11.3.0 If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/net/dsa/microchip/ksz_common.c:931 ksz_switch_register() warn: potentially one past the end of array 'dev->ports[port_num]' vim +931 drivers/net/dsa/microchip/ksz_common.c b987e98e50ab90 Woojung Huh 2017-05-31 838 c2e866911e2540 Tristram Ha 2018-11-20 839 int ksz_switch_register(struct ksz_device *dev, c2e866911e2540 Tristram Ha 2018-11-20 840 const struct ksz_dev_ops *ops) b987e98e50ab90 Woojung Huh 2017-05-31 841 { 462d525018f068 Arun Ramadoss 2022-05-17 842 const struct ksz_chip_data *info; 912aae27c6af66 Helmut Grohne 2020-09-24 843 struct device_node *port, *ports; 0c65b2b90d13c1 Andrew Lunn 2019-11-04 844 phy_interface_t interface; edecfa98f602a5 Helmut Grohne 2020-09-08 845 unsigned int port_num; b987e98e50ab90 Woojung Huh 2017-05-31 846 int ret; 198b34783ab10d Arun Ramadoss 2022-05-17 847 int i; b987e98e50ab90 Woojung Huh 2017-05-31 848 b987e98e50ab90 Woojung Huh 2017-05-31 849 if (dev->pdata) b987e98e50ab90 Woojung Huh 2017-05-31 850 dev->chip_id = dev->pdata->chip_id; b987e98e50ab90 Woojung Huh 2017-05-31 851 924352c3d6347d Marek Vasut 2018-12-10 852 dev->reset_gpio = devm_gpiod_get_optional(dev->dev, "reset", 924352c3d6347d Marek Vasut 2018-12-10 853 GPIOD_OUT_LOW); 924352c3d6347d Marek Vasut 2018-12-10 854 if (IS_ERR(dev->reset_gpio)) 924352c3d6347d Marek Vasut 2018-12-10 855 return PTR_ERR(dev->reset_gpio); 924352c3d6347d Marek Vasut 2018-12-10 856 924352c3d6347d Marek Vasut 2018-12-10 857 if (dev->reset_gpio) { 22e72b5e049b95 Marek Vasut 2019-06-23 858 gpiod_set_value_cansleep(dev->reset_gpio, 1); 5b797980908ac8 Paul Barker 2020-09-09 859 usleep_range(10000, 12000); 22e72b5e049b95 Marek Vasut 2019-06-23 860 gpiod_set_value_cansleep(dev->reset_gpio, 0); 1c45ba93d34cd6 Marek Vasut 2021-01-20 861 msleep(100); 924352c3d6347d Marek Vasut 2018-12-10 862 } 924352c3d6347d Marek Vasut 2018-12-10 863 7049f9b5d0529a Tristram Ha 2019-02-22 864 mutex_init(&dev->dev_mutex); 013572a236ef53 Marek Vasut 2019-10-16 865 mutex_init(&dev->regmap_mutex); 284fb78ed75721 Tristram Ha 2018-11-02 866 mutex_init(&dev->alu_mutex); 284fb78ed75721 Tristram Ha 2018-11-02 867 mutex_init(&dev->vlan_mutex); 284fb78ed75721 Tristram Ha 2018-11-02 868 c2e866911e2540 Tristram Ha 2018-11-20 869 dev->dev_ops = ops; c2e866911e2540 Tristram Ha 2018-11-20 870 c2e866911e2540 Tristram Ha 2018-11-20 871 if (dev->dev_ops->detect(dev)) b987e98e50ab90 Woojung Huh 2017-05-31 872 return -EINVAL; b987e98e50ab90 Woojung Huh 2017-05-31 873 462d525018f068 Arun Ramadoss 2022-05-17 874 info = ksz_lookup_info(dev->chip_id); 462d525018f068 Arun Ramadoss 2022-05-17 875 if (!info) 462d525018f068 Arun Ramadoss 2022-05-17 876 return -ENODEV; 462d525018f068 Arun Ramadoss 2022-05-17 877 462d525018f068 Arun Ramadoss 2022-05-17 878 /* Update the compatible info with the probed one */ 462d525018f068 Arun Ramadoss 2022-05-17 879 dev->info = info; 462d525018f068 Arun Ramadoss 2022-05-17 880 eee16b147121ce Arun Ramadoss 2022-05-17 881 ret = ksz_check_device_id(dev); eee16b147121ce Arun Ramadoss 2022-05-17 882 if (ret) eee16b147121ce Arun Ramadoss 2022-05-17 883 return ret; eee16b147121ce Arun Ramadoss 2022-05-17 884 c2e866911e2540 Tristram Ha 2018-11-20 885 ret = dev->dev_ops->init(dev); b987e98e50ab90 Woojung Huh 2017-05-31 886 if (ret) b987e98e50ab90 Woojung Huh 2017-05-31 887 return ret; b987e98e50ab90 Woojung Huh 2017-05-31 888 198b34783ab10d Arun Ramadoss 2022-05-17 889 dev->ports = devm_kzalloc(dev->dev, 198b34783ab10d Arun Ramadoss 2022-05-17 890 dev->info->port_cnt * sizeof(struct ksz_port), 198b34783ab10d Arun Ramadoss 2022-05-17 891 GFP_KERNEL); 198b34783ab10d Arun Ramadoss 2022-05-17 892 if (!dev->ports) 198b34783ab10d Arun Ramadoss 2022-05-17 893 return -ENOMEM; 198b34783ab10d Arun Ramadoss 2022-05-17 894 198b34783ab10d Arun Ramadoss 2022-05-17 895 for (i = 0; i < dev->info->port_cnt; i++) { 198b34783ab10d Arun Ramadoss 2022-05-17 896 spin_lock_init(&dev->ports[i].mib.stats64_lock); 198b34783ab10d Arun Ramadoss 2022-05-17 897 mutex_init(&dev->ports[i].mib.cnt_mutex); 198b34783ab10d Arun Ramadoss 2022-05-17 898 dev->ports[i].mib.counters = 198b34783ab10d Arun Ramadoss 2022-05-17 899 devm_kzalloc(dev->dev, 198b34783ab10d Arun Ramadoss 2022-05-17 900 sizeof(u64) * (dev->info->mib_cnt + 1), 198b34783ab10d Arun Ramadoss 2022-05-17 901 GFP_KERNEL); 198b34783ab10d Arun Ramadoss 2022-05-17 902 if (!dev->ports[i].mib.counters) 198b34783ab10d Arun Ramadoss 2022-05-17 903 return -ENOMEM; 198b34783ab10d Arun Ramadoss 2022-05-17 904 } 198b34783ab10d Arun Ramadoss 2022-05-17 905 198b34783ab10d Arun Ramadoss 2022-05-17 906 /* set the real number of ports */ 198b34783ab10d Arun Ramadoss 2022-05-17 907 dev->ds->num_ports = dev->info->port_cnt; 198b34783ab10d Arun Ramadoss 2022-05-17 908 8c29bebb1f8a68 Tristram Ha 2019-02-28 909 /* Host port interface will be self detected, or specifically set in 8c29bebb1f8a68 Tristram Ha 2019-02-28 910 * device tree. 8c29bebb1f8a68 Tristram Ha 2019-02-28 911 */ 462d525018f068 Arun Ramadoss 2022-05-17 912 for (port_num = 0; port_num < dev->info->port_cnt; ++port_num) edecfa98f602a5 Helmut Grohne 2020-09-08 913 dev->ports[port_num].interface = PHY_INTERFACE_MODE_NA; c2e866911e2540 Tristram Ha 2018-11-20 914 if (dev->dev->of_node) { 0c65b2b90d13c1 Andrew Lunn 2019-11-04 915 ret = of_get_phy_mode(dev->dev->of_node, &interface); 0c65b2b90d13c1 Andrew Lunn 2019-11-04 916 if (ret == 0) edecfa98f602a5 Helmut Grohne 2020-09-08 917 dev->compat_interface = interface; 44e53c88828f2b Christian Eggers 2020-11-20 918 ports = of_get_child_by_name(dev->dev->of_node, "ethernet-ports"); 44e53c88828f2b Christian Eggers 2020-11-20 919 if (!ports) 912aae27c6af66 Helmut Grohne 2020-09-24 920 ports = of_get_child_by_name(dev->dev->of_node, "ports"); 912aae27c6af66 Helmut Grohne 2020-09-24 921 if (ports) 912aae27c6af66 Helmut Grohne 2020-09-24 922 for_each_available_child_of_node(ports, port) { 912aae27c6af66 Helmut Grohne 2020-09-24 923 if (of_property_read_u32(port, "reg", 912aae27c6af66 Helmut Grohne 2020-09-24 924 &port_num)) edecfa98f602a5 Helmut Grohne 2020-09-08 925 continue; 84f7e0bb4809f4 kernel test robot 2021-07-11 926 if (!(dev->port_mask & BIT(port_num))) { 84f7e0bb4809f4 kernel test robot 2021-07-11 927 of_node_put(port); edecfa98f602a5 Helmut Grohne 2020-09-08 928 return -EINVAL; 84f7e0bb4809f4 kernel test robot 2021-07-11 929 } 912aae27c6af66 Helmut Grohne 2020-09-24 930 of_get_phy_mode(port, 912aae27c6af66 Helmut Grohne 2020-09-24 @931 &dev->ports[port_num].interface); edecfa98f602a5 Helmut Grohne 2020-09-08 932 } 79c8bd15b61eca Robert Hancock 2019-06-12 933 dev->synclko_125 = of_property_read_bool(dev->dev->of_node, 79c8bd15b61eca Robert Hancock 2019-06-12 934 "microchip,synclko-125"); 48bf8b8a04c9cd Robert Hancock 2022-01-27 935 dev->synclko_disable = of_property_read_bool(dev->dev->of_node, 48bf8b8a04c9cd Robert Hancock 2022-01-27 936 "microchip,synclko-disable"); 48bf8b8a04c9cd Robert Hancock 2022-01-27 937 if (dev->synclko_125 && dev->synclko_disable) { 48bf8b8a04c9cd Robert Hancock 2022-01-27 938 dev_err(dev->dev, "inconsistent synclko settings\n"); 48bf8b8a04c9cd Robert Hancock 2022-01-27 939 return -EINVAL; 48bf8b8a04c9cd Robert Hancock 2022-01-27 940 } c2e866911e2540 Tristram Ha 2018-11-20 941 } c2e866911e2540 Tristram Ha 2018-11-20 942 c2e866911e2540 Tristram Ha 2018-11-20 943 ret = dsa_register_switch(dev->ds); c2e866911e2540 Tristram Ha 2018-11-20 944 if (ret) { c2e866911e2540 Tristram Ha 2018-11-20 945 dev->dev_ops->exit(dev); c2e866911e2540 Tristram Ha 2018-11-20 946 return ret; c2e866911e2540 Tristram Ha 2018-11-20 947 } c2e866911e2540 Tristram Ha 2018-11-20 948 8098bd69bc4e92 Christian Eggers 2020-10-12 949 /* Read MIB counters every 30 seconds to avoid overflow. */ 12c740c8683fed Oleksij Rempel 2022-02-21 950 dev->mib_read_interval = msecs_to_jiffies(5000); 8098bd69bc4e92 Christian Eggers 2020-10-12 951 8098bd69bc4e92 Christian Eggers 2020-10-12 952 /* Start the MIB timer. */ 8098bd69bc4e92 Christian Eggers 2020-10-12 953 schedule_delayed_work(&dev->mib_read, 0); 8098bd69bc4e92 Christian Eggers 2020-10-12 954 c2e866911e2540 Tristram Ha 2018-11-20 955 return 0; b987e98e50ab90 Woojung Huh 2017-05-31 956 } b987e98e50ab90 Woojung Huh 2017-05-31 957 EXPORT_SYMBOL(ksz_switch_register); b987e98e50ab90 Woojung Huh 2017-05-31 958 :::::: The code at line 931 was first introduced by commit :::::: 912aae27c6af6605eae967ab540c5e26bd76d421 net: dsa: microchip: really look for phy-mode in port nodes :::::: TO: Helmut Grohne <[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]
