Message ID | 20220719120052.26681-1-Divya.Koppera@microchip.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v2,net] net: phy: micrel: Fix warn: passing zero to PTR_ERR | expand |
On Tue, Jul 19, 2022 at 05:30:52PM +0530, Divya Koppera wrote: > Handle the NULL pointer case > > Fixes New smatch warnings: > drivers/net/phy/micrel.c:2613 lan8814_ptp_probe_once() warn: passing zero to 'PTR_ERR' > > vim +/PTR_ERR +2613 drivers/net/phy/micrel.c > > Reported-by: kernel test robot <lkp@intel.com> > Reported-by: Dan Carpenter <dan.carpenter@oracle.com> > Fixes: ece19502834d ("net: phy: micrel: 1588 support for LAN8814 phy") > Signed-off-by: Divya Koppera <Divya.Koppera@microchip.com> > --- > v1 -> v2: > - Handled NULL pointer case > - Changed subject line with net-next to net This is not a genuine bug fix, and so it should target next-next. > --- > drivers/net/phy/micrel.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c > index e78d0bf69bc3..6be6ee156f40 100644 > --- a/drivers/net/phy/micrel.c > +++ b/drivers/net/phy/micrel.c > @@ -2812,12 +2812,16 @@ static int lan8814_ptp_probe_once(struct phy_device *phydev) > > shared->ptp_clock = ptp_clock_register(&shared->ptp_clock_info, > &phydev->mdio.dev); > - if (IS_ERR_OR_NULL(shared->ptp_clock)) { > + if (IS_ERR(shared->ptp_clock)) { > phydev_err(phydev, "ptp_clock_register failed %lu\n", > PTR_ERR(shared->ptp_clock)); > return -EINVAL; > } > > + /* Check if PHC support is missing at the configuration level */ > + if (!shared->ptp_clock) > + return 0; This is cause a NULL pointer de-reference in lan8814_ts_info() when it calls info->phc_index = ptp_clock_index(shared->ptp_clock); > + > phydev_dbg(phydev, "successfully registered ptp clock\n"); > > shared->phydev = phydev; > -- > 2.17.1 > Thanks, Richard
Hi Richard, > -----Original Message----- > From: Richard Cochran <richardcochran@gmail.com> > Sent: Tuesday, July 19, 2022 7:26 PM > To: Divya Koppera - I30481 <Divya.Koppera@microchip.com> > Cc: andrew@lunn.ch; hkallweit1@gmail.com; linux@armlinux.org.uk; > davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; UNGLinuxDriver > <UNGLinuxDriver@microchip.com>; Madhuri Sripada - I34878 > <Madhuri.Sripada@microchip.com> > Subject: Re: [PATCH v2 net] net: phy: micrel: Fix warn: passing zero to > PTR_ERR > > EXTERNAL EMAIL: Do not click links or open attachments unless you know the > content is safe > > On Tue, Jul 19, 2022 at 05:30:52PM +0530, Divya Koppera wrote: > > Handle the NULL pointer case > > > > Fixes New smatch warnings: > > drivers/net/phy/micrel.c:2613 lan8814_ptp_probe_once() warn: passing > zero to 'PTR_ERR' > > > > vim +/PTR_ERR +2613 drivers/net/phy/micrel.c > > > > Reported-by: kernel test robot <lkp@intel.com> > > Reported-by: Dan Carpenter <dan.carpenter@oracle.com> > > Fixes: ece19502834d ("net: phy: micrel: 1588 support for LAN8814 phy") > > Signed-off-by: Divya Koppera <Divya.Koppera@microchip.com> > > --- > > v1 -> v2: > > - Handled NULL pointer case > > - Changed subject line with net-next to net > > This is not a genuine bug fix, and so it should target next-next. > > > --- > > drivers/net/phy/micrel.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index > > e78d0bf69bc3..6be6ee156f40 100644 > > --- a/drivers/net/phy/micrel.c > > +++ b/drivers/net/phy/micrel.c > > @@ -2812,12 +2812,16 @@ static int lan8814_ptp_probe_once(struct > > phy_device *phydev) > > > > shared->ptp_clock = ptp_clock_register(&shared->ptp_clock_info, > > &phydev->mdio.dev); > > - if (IS_ERR_OR_NULL(shared->ptp_clock)) { > > + if (IS_ERR(shared->ptp_clock)) { > > phydev_err(phydev, "ptp_clock_register failed %lu\n", > > PTR_ERR(shared->ptp_clock)); > > return -EINVAL; > > } > > > > + /* Check if PHC support is missing at the configuration level */ > > + if (!shared->ptp_clock) > > + return 0; > > This is cause a NULL pointer de-reference in lan8814_ts_info() when it calls > > info->phc_index = ptp_clock_index(shared->ptp_clock); > NULL case handling seems to be redundant here because at starting of the function itself there is check for config support of ptp as below static int lan8814_ptp_probe_once(struct phy_device *phydev) { struct lan8814_shared_priv *shared = phydev->shared->priv; if (!IS_ENABLED(CONFIG_PTP_1588_CLOCK) || !IS_ENABLED(CONFIG_NETWORK_PHY_TIMESTAMPING)) return 0; So chances of getting shared-> ptp_clock to be NULL is 0. Let me know your thoughts. I'll remove this check in next revision if it is redundant. > > + > > phydev_dbg(phydev, "successfully registered ptp clock\n"); > > > > shared->phydev = phydev; > > -- > > 2.17.1 > > > > Thanks, > Richard
On Wed, Jul 20, 2022 at 04:32:55AM +0000, Divya.Koppera@microchip.com wrote: > static int lan8814_ptp_probe_once(struct phy_device *phydev) > { > struct lan8814_shared_priv *shared = phydev->shared->priv; > > if (!IS_ENABLED(CONFIG_PTP_1588_CLOCK) || > !IS_ENABLED(CONFIG_NETWORK_PHY_TIMESTAMPING)) > return 0; It is weird to use macros here, but not before calling ptp_clock_register. Make it consistent by checking shared->ptp_clock instead. That is also better form. Thanks, Richard
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index e78d0bf69bc3..6be6ee156f40 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -2812,12 +2812,16 @@ static int lan8814_ptp_probe_once(struct phy_device *phydev) shared->ptp_clock = ptp_clock_register(&shared->ptp_clock_info, &phydev->mdio.dev); - if (IS_ERR_OR_NULL(shared->ptp_clock)) { + if (IS_ERR(shared->ptp_clock)) { phydev_err(phydev, "ptp_clock_register failed %lu\n", PTR_ERR(shared->ptp_clock)); return -EINVAL; } + /* Check if PHC support is missing at the configuration level */ + if (!shared->ptp_clock) + return 0; + phydev_dbg(phydev, "successfully registered ptp clock\n"); shared->phydev = phydev;
Handle the NULL pointer case Fixes New smatch warnings: drivers/net/phy/micrel.c:2613 lan8814_ptp_probe_once() warn: passing zero to 'PTR_ERR' vim +/PTR_ERR +2613 drivers/net/phy/micrel.c Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Fixes: ece19502834d ("net: phy: micrel: 1588 support for LAN8814 phy") Signed-off-by: Divya Koppera <Divya.Koppera@microchip.com> --- v1 -> v2: - Handled NULL pointer case - Changed subject line with net-next to net --- drivers/net/phy/micrel.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)