> On May 16, 2019 at 3:22 PM Biju Das <[email protected]> wrote: > > > Fix the below smatch warning by adding variable check rather than the > hardcoded value. > warn: array off by one? 'data->select_value[channel_num]' > > Reported-by: Dan Carpenter <[email protected]> > Signed-off-by: Biju Das <[email protected]> > Reviewed-by: Geert Uytterhoeven <[email protected]> > --- > V1-->V2 > * Incorporated Geert's review comments. > (https://patchwork.kernel.org/patch/10944837/) > --- > drivers/phy/renesas/phy-rcar-gen2.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/phy/renesas/phy-rcar-gen2.c > b/drivers/phy/renesas/phy-rcar-gen2.c > index 8dc5710..8dbdc5b 100644 > --- a/drivers/phy/renesas/phy-rcar-gen2.c > +++ b/drivers/phy/renesas/phy-rcar-gen2.c > @@ -71,6 +71,7 @@ struct rcar_gen2_phy_driver { > struct rcar_gen2_phy_data { > const struct phy_ops *gen2_phy_ops; > const u32 (*select_value)[PHYS_PER_CHANNEL]; > + const u32 num_channels; > }; > > static int rcar_gen2_phy_init(struct phy *p) > @@ -271,11 +272,13 @@ static const u32 usb20_select_value[][PHYS_PER_CHANNEL] > = { > static const struct rcar_gen2_phy_data rcar_gen2_usb_phy_data = { > .gen2_phy_ops = &rcar_gen2_phy_ops, > .select_value = pci_select_value, > + .num_channels = ARRAY_SIZE(pci_select_value), > }; > > static const struct rcar_gen2_phy_data rz_g1c_usb_phy_data = { > .gen2_phy_ops = &rz_g1c_phy_ops, > .select_value = usb20_select_value, > + .num_channels = ARRAY_SIZE(usb20_select_value), > }; > > static const struct of_device_id rcar_gen2_phy_match_table[] = { > @@ -389,7 +392,7 @@ static int rcar_gen2_phy_probe(struct platform_device > *pdev) > channel->selected_phy = -1; > > error = of_property_read_u32(np, "reg", &channel_num); > - if (error || channel_num > 2) { > + if (error || channel_num >= data->num_channels) { > dev_err(dev, "Invalid \"reg\" property\n"); > return error; > } > -- > 2.7.4 >
Reviewed-by: Ulrich Hecht <[email protected]> CU Uli
