Messages in this thread | | | From | <> | Subject | RE: [PATCH v2 net] net: phy: micrel: Fix warn: passing zero to PTR_ERR | Date | Wed, 20 Jul 2022 04:32:55 +0000 |
| |
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
| |