> On May 16, 2019 at 3:22 PM Biju Das <biju.das@xxxxxxxxxxxxxx> 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 <dan.carpenter@xxxxxxxxxx> > Signed-off-by: Biju Das <biju.das@xxxxxxxxxxxxxx> > Reviewed-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > --- > 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 <uli+renesas@xxxxxxxx> CU Uli