Hi Dan,
url:
https://github.com/0day-ci/linux/commits/Dan-Murphy/RGMII-Internal-delay-...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
de1b99ef2aa1e982c86b15853e013c6e3dbc1e7a
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
New smatch warnings:
drivers/net/phy/dp83869.c:221 dp83869_of_init() error: buffer overflow
'dp83869_internal_delay' 16 <= 16
Old smatch warnings:
drivers/net/phy/dp83869.c:231 dp83869_of_init() error: buffer overflow
'dp83869_internal_delay' 16 <= 16
#
https://github.com/0day-ci/linux/commit/c27cb3ace00f1b89679d6542f9ee2eb8f...
git remote add linux-review
https://github.com/0day-ci/linux
git remote update linux-review
git checkout c27cb3ace00f1b89679d6542f9ee2eb8faa76112
vim +/dp83869_internal_delay +221 drivers/net/phy/dp83869.c
01db923e83779b Dan Murphy 2019-11-13 174 static int dp83869_of_init(struct phy_device
*phydev)
01db923e83779b Dan Murphy 2019-11-13 175 {
01db923e83779b Dan Murphy 2019-11-13 176 struct dp83869_private *dp83869 =
phydev->priv;
01db923e83779b Dan Murphy 2019-11-13 177 struct device *dev =
&phydev->mdio.dev;
01db923e83779b Dan Murphy 2019-11-13 178 struct device_node *of_node =
dev->of_node;
c27cb3ace00f1b Dan Murphy 2020-05-21 179 int delay_size =
ARRAY_SIZE(dp83869_internal_delay);
01db923e83779b Dan Murphy 2019-11-13 180 int ret;
01db923e83779b Dan Murphy 2019-11-13 181
01db923e83779b Dan Murphy 2019-11-13 182 if (!of_node)
01db923e83779b Dan Murphy 2019-11-13 183 return -ENODEV;
01db923e83779b Dan Murphy 2019-11-13 184
01db923e83779b Dan Murphy 2019-11-13 185 dp83869->io_impedance = -EINVAL;
01db923e83779b Dan Murphy 2019-11-13 186
01db923e83779b Dan Murphy 2019-11-13 187 /* Optional configuration */
01db923e83779b Dan Murphy 2019-11-13 188 ret = of_property_read_u32(of_node,
"ti,clk-output-sel",
01db923e83779b Dan Murphy 2019-11-13 189 &dp83869->clk_output_sel);
01db923e83779b Dan Murphy 2019-11-13 190 if (ret || dp83869->clk_output_sel >
DP83869_CLK_O_SEL_REF_CLK)
01db923e83779b Dan Murphy 2019-11-13 191 dp83869->clk_output_sel =
DP83869_CLK_O_SEL_REF_CLK;
01db923e83779b Dan Murphy 2019-11-13 192
01db923e83779b Dan Murphy 2019-11-13 193 ret = of_property_read_u32(of_node,
"ti,op-mode", &dp83869->mode);
01db923e83779b Dan Murphy 2019-11-13 194 if (ret == 0) {
01db923e83779b Dan Murphy 2019-11-13 195 if (dp83869->mode <
DP83869_RGMII_COPPER_ETHERNET ||
01db923e83779b Dan Murphy 2019-11-13 196 dp83869->mode >
DP83869_SGMII_COPPER_ETHERNET)
01db923e83779b Dan Murphy 2019-11-13 197 return -EINVAL;
01db923e83779b Dan Murphy 2019-11-13 198 }
01db923e83779b Dan Murphy 2019-11-13 199
01db923e83779b Dan Murphy 2019-11-13 200 if (of_property_read_bool(of_node,
"ti,max-output-impedance"))
01db923e83779b Dan Murphy 2019-11-13 201 dp83869->io_impedance =
DP83869_IO_MUX_CFG_IO_IMPEDANCE_MAX;
01db923e83779b Dan Murphy 2019-11-13 202 else if (of_property_read_bool(of_node,
"ti,min-output-impedance"))
01db923e83779b Dan Murphy 2019-11-13 203 dp83869->io_impedance =
DP83869_IO_MUX_CFG_IO_IMPEDANCE_MIN;
01db923e83779b Dan Murphy 2019-11-13 204
01db923e83779b Dan Murphy 2019-11-13 205 if (of_property_read_bool(of_node,
"enet-phy-lane-swap"))
01db923e83779b Dan Murphy 2019-11-13 206 dp83869->port_mirroring =
DP83869_PORT_MIRRORING_EN;
01db923e83779b Dan Murphy 2019-11-13 207 else
01db923e83779b Dan Murphy 2019-11-13 208 dp83869->port_mirroring =
DP83869_PORT_MIRRORING_DIS;
01db923e83779b Dan Murphy 2019-11-13 209
01db923e83779b Dan Murphy 2019-11-13 210 if (of_property_read_u32(of_node,
"rx-fifo-depth",
01db923e83779b Dan Murphy 2019-11-13 211 &dp83869->rx_fifo_depth))
01db923e83779b Dan Murphy 2019-11-13 212 dp83869->rx_fifo_depth =
DP83869_PHYCR_FIFO_DEPTH_4_B_NIB;
01db923e83779b Dan Murphy 2019-11-13 213
01db923e83779b Dan Murphy 2019-11-13 214 if (of_property_read_u32(of_node,
"tx-fifo-depth",
01db923e83779b Dan Murphy 2019-11-13 215 &dp83869->tx_fifo_depth))
01db923e83779b Dan Murphy 2019-11-13 216 dp83869->tx_fifo_depth =
DP83869_PHYCR_FIFO_DEPTH_4_B_NIB;
01db923e83779b Dan Murphy 2019-11-13 217
c27cb3ace00f1b Dan Murphy 2020-05-21 218 dp83869->rx_id_delay =
DP83869_RGMII_CLK_DELAY_INV;
c27cb3ace00f1b Dan Murphy 2020-05-21 219 ret = of_property_read_u32(of_node,
"rx-internal-delay",
c27cb3ace00f1b Dan Murphy 2020-05-21 220 &dp83869->rx_id_delay);
c27cb3ace00f1b Dan Murphy 2020-05-21 @221 if (!ret && dp83869->rx_id_delay
> dp83869_internal_delay[delay_size]) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Out of bounds. Not clear what was intended here.
c27cb3ace00f1b Dan Murphy 2020-05-21 222 phydev_err(phydev,
c27cb3ace00f1b Dan Murphy 2020-05-21 223 "rx-internal-delay value of %u out
of range\n",
c27cb3ace00f1b Dan Murphy 2020-05-21 224 dp83869->rx_id_delay);
c27cb3ace00f1b Dan Murphy 2020-05-21 225 return -EINVAL;
c27cb3ace00f1b Dan Murphy 2020-05-21 226 }
c27cb3ace00f1b Dan Murphy 2020-05-21 227
c27cb3ace00f1b Dan Murphy 2020-05-21 228 dp83869->tx_id_delay =
DP83869_RGMII_CLK_DELAY_INV;
c27cb3ace00f1b Dan Murphy 2020-05-21 229 ret = of_property_read_u32(of_node,
"tx-internal-delay",
c27cb3ace00f1b Dan Murphy 2020-05-21 230 &dp83869->tx_id_delay);
c27cb3ace00f1b Dan Murphy 2020-05-21 231 if (!ret && dp83869->tx_id_delay
> dp83869_internal_delay[delay_size]) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Also out of bounds.
c27cb3ace00f1b Dan Murphy 2020-05-21 232 phydev_err(phydev,
c27cb3ace00f1b Dan Murphy 2020-05-21 233 "tx-internal-delay value of %u out
of range\n",
c27cb3ace00f1b Dan Murphy 2020-05-21 234 dp83869->tx_id_delay);
c27cb3ace00f1b Dan Murphy 2020-05-21 235 return -EINVAL;
c27cb3ace00f1b Dan Murphy 2020-05-21 236 }
c27cb3ace00f1b Dan Murphy 2020-05-21 237
786c4a5372e119 Dan Murphy 2019-11-26 238 return ret;
01db923e83779b Dan Murphy 2019-11-13 239 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org