drivers/net/phy/micrel.c:2613 lan8814_ptp_probe_once() warn: passing zero to 'PTR_ERR'
From: Dan Carpenter
Date: Tue Nov 22 2022 - 02:15:56 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: eb7081409f94a9a8608593d0fb63a1aa3d6f95d8
commit: ece19502834d84ece2e056db28257ca2aa6e4d48 net: phy: micrel: 1588 support for LAN8814 phy
config: openrisc-randconfig-m041-20221121
compiler: or1k-linux-gcc (GCC) 12.1.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Reported-by: Dan Carpenter <error27@xxxxxxxxx>
New smatch warnings:
drivers/net/phy/micrel.c:2613 lan8814_ptp_probe_once() warn: passing zero to 'PTR_ERR'
Old smatch warnings:
drivers/net/phy/micrel.c:1750 ksz886x_cable_test_get_status() error: uninitialized symbol 'ret'.
vim +/PTR_ERR +2613 drivers/net/phy/micrel.c
ece19502834d84e Divya Koppera 2022-03-04 2589 static int lan8814_ptp_probe_once(struct phy_device *phydev)
ece19502834d84e Divya Koppera 2022-03-04 2590 {
ece19502834d84e Divya Koppera 2022-03-04 2591 struct lan8814_shared_priv *shared = phydev->shared->priv;
ece19502834d84e Divya Koppera 2022-03-04 2592
ece19502834d84e Divya Koppera 2022-03-04 2593 /* Initialise shared lock for clock*/
ece19502834d84e Divya Koppera 2022-03-04 2594 mutex_init(&shared->shared_lock);
ece19502834d84e Divya Koppera 2022-03-04 2595
ece19502834d84e Divya Koppera 2022-03-04 2596 shared->ptp_clock_info.owner = THIS_MODULE;
ece19502834d84e Divya Koppera 2022-03-04 2597 snprintf(shared->ptp_clock_info.name, 30, "%s", phydev->drv->name);
ece19502834d84e Divya Koppera 2022-03-04 2598 shared->ptp_clock_info.max_adj = 31249999;
ece19502834d84e Divya Koppera 2022-03-04 2599 shared->ptp_clock_info.n_alarm = 0;
ece19502834d84e Divya Koppera 2022-03-04 2600 shared->ptp_clock_info.n_ext_ts = 0;
ece19502834d84e Divya Koppera 2022-03-04 2601 shared->ptp_clock_info.n_pins = 0;
ece19502834d84e Divya Koppera 2022-03-04 2602 shared->ptp_clock_info.pps = 0;
ece19502834d84e Divya Koppera 2022-03-04 2603 shared->ptp_clock_info.pin_config = NULL;
ece19502834d84e Divya Koppera 2022-03-04 2604 shared->ptp_clock_info.adjfine = lan8814_ptpci_adjfine;
ece19502834d84e Divya Koppera 2022-03-04 2605 shared->ptp_clock_info.adjtime = lan8814_ptpci_adjtime;
ece19502834d84e Divya Koppera 2022-03-04 2606 shared->ptp_clock_info.gettime64 = lan8814_ptpci_gettime64;
ece19502834d84e Divya Koppera 2022-03-04 2607 shared->ptp_clock_info.settime64 = lan8814_ptpci_settime64;
ece19502834d84e Divya Koppera 2022-03-04 2608 shared->ptp_clock_info.getcrosststamp = NULL;
ece19502834d84e Divya Koppera 2022-03-04 2609
ece19502834d84e Divya Koppera 2022-03-04 2610 shared->ptp_clock = ptp_clock_register(&shared->ptp_clock_info,
ece19502834d84e Divya Koppera 2022-03-04 2611 &phydev->mdio.dev);
ece19502834d84e Divya Koppera 2022-03-04 2612 if (IS_ERR_OR_NULL(shared->ptp_clock)) {
This should be if (IS_ERR(shared->ptp_clock)) {
The ptp_clock_register() will only return NULL if it has been disabled
in the .config. Ideally the driver would just add checks for NULL where
necessary and continue without the clock. But if it's not possible then
the driver should add a depend in the Kconfig. Otherwise the driver
will be built in a way that it can never be used.
ece19502834d84e Divya Koppera 2022-03-04 @2613 phydev_err(phydev, "ptp_clock_register failed %lu\n",
ece19502834d84e Divya Koppera 2022-03-04 2614 PTR_ERR(shared->ptp_clock));
ece19502834d84e Divya Koppera 2022-03-04 2615 return -EINVAL;
ece19502834d84e Divya Koppera 2022-03-04 2616 }
ece19502834d84e Divya Koppera 2022-03-04 2617
ece19502834d84e Divya Koppera 2022-03-04 2618 phydev_dbg(phydev, "successfully registered ptp clock\n");
ece19502834d84e Divya Koppera 2022-03-04 2619
ece19502834d84e Divya Koppera 2022-03-04 2620 shared->phydev = phydev;
ece19502834d84e Divya Koppera 2022-03-04 2621
ece19502834d84e Divya Koppera 2022-03-04 2622 /* The EP.4 is shared between all the PHYs in the package and also it
ece19502834d84e Divya Koppera 2022-03-04 2623 * can be accessed by any of the PHYs
ece19502834d84e Divya Koppera 2022-03-04 2624 */
ece19502834d84e Divya Koppera 2022-03-04 2625 lanphy_write_page_reg(phydev, 4, LTC_HARD_RESET, LTC_HARD_RESET_);
ece19502834d84e Divya Koppera 2022-03-04 2626 lanphy_write_page_reg(phydev, 4, PTP_OPERATING_MODE,
ece19502834d84e Divya Koppera 2022-03-04 2627 PTP_OPERATING_MODE_STANDALONE_);
ece19502834d84e Divya Koppera 2022-03-04 2628
ece19502834d84e Divya Koppera 2022-03-04 2629 return 0;
ece19502834d84e Divya Koppera 2022-03-04 2630 }
--
0-DAY CI Kernel Test Service
https://01.org/lkp