CC: [email protected]
CC: [email protected]
TO: Yoshihiro Shimoda <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git master
head:   1869e226a7b3ef75b4f70ede2f1b7229f7157fa4
commit: 7d3ba9360c6dac7c077fbd6631e08f32ea2bcd53 [21/39] net: phy: call 
phy_disable_interrupts() in phy_attach_direct() instead
:::::: branch date: 3 hours ago
:::::: commit date: 4 days ago
compiler: h8300-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


cppcheck warnings: (new ones prefixed by >>)

>> drivers/net/phy/phy_device.c:1429:9: warning: Identical condition 'err', 
>> second condition is always false [identicalConditionAfterEarlyExit]
    return err;
           ^
   drivers/net/phy/phy_device.c:1423:6: note: first condition
    if (err)
        ^
   drivers/net/phy/phy_device.c:1429:9: note: second condition
    return err;
           ^

# 
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=7d3ba9360c6dac7c077fbd6631e08f32ea2bcd53
git remote add net https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
git fetch --no-tags net master
git checkout 7d3ba9360c6dac7c077fbd6631e08f32ea2bcd53
vim +/err +1429 drivers/net/phy/phy_device.c

298e54fa810e02 Russell King          2019-11-15  1302  
b3df0da886ffdb Randy Dunlap          2007-03-06  1303  /**
fa94f6d93c5382 Grant Likely          2009-04-25  1304   * phy_attach_direct - 
attach a network device to a given PHY device pointer
b3df0da886ffdb Randy Dunlap          2007-03-06  1305   * @dev: network device 
to attach
fa94f6d93c5382 Grant Likely          2009-04-25  1306   * @phydev: Pointer to 
phy_device to attach
b3df0da886ffdb Randy Dunlap          2007-03-06  1307   * @flags: PHY device's 
dev_flags
b3df0da886ffdb Randy Dunlap          2007-03-06  1308   * @interface: PHY 
device's interface
e13934563db047 Andy Fleming          2005-08-24  1309   *
b3df0da886ffdb Randy Dunlap          2007-03-06  1310   * Description: Called 
by drivers to attach to a particular PHY
e13934563db047 Andy Fleming          2005-08-24  1311   *     device. The 
phy_device is found, and properly hooked up
257184d7cc0351 Andy Fleming          2014-01-10  1312   *     to the 
phy_driver.  If no driver is attached, then a
257184d7cc0351 Andy Fleming          2014-01-10  1313   *     generic driver is 
used.  The phy_device is given a ptr to
e13934563db047 Andy Fleming          2005-08-24  1314   *     the attaching 
device, and given a callback for link status
b3df0da886ffdb Randy Dunlap          2007-03-06  1315   *     change.  The 
phy_device is returned to the attaching driver.
7322967bc1bd97 Russell King          2015-09-24  1316   *     This function 
takes a reference on the phy device.
e13934563db047 Andy Fleming          2005-08-24  1317   */
257184d7cc0351 Andy Fleming          2014-01-10  1318  int 
phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
fa94f6d93c5382 Grant Likely          2009-04-25  1319                 u32 
flags, phy_interface_t interface)
e13934563db047 Andy Fleming          2005-08-24  1320  {
e5a03bfd873c29 Andrew Lunn           2016-01-06  1321   struct mii_bus *bus = 
phydev->mdio.bus;
e5a03bfd873c29 Andrew Lunn           2016-01-06  1322   struct device *d = 
&phydev->mdio.dev;
2db2d9d1ac3722 Ioana Ciornei         2019-05-28  1323   struct module 
*ndev_owner = NULL;
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1324   bool using_genphy = 
false;
d005a09edf8b12 Marc Kleine-Budde     2011-03-28  1325   int err;
e13934563db047 Andy Fleming          2005-08-24  1326  
ec988ad78ed6d1 Florian Fainelli      2016-12-06  1327   /* For Ethernet device 
drivers that register their own MDIO bus, we
ec988ad78ed6d1 Florian Fainelli      2016-12-06  1328    * will have bus->owner 
match ndev_mod, so we do not want to increment
ec988ad78ed6d1 Florian Fainelli      2016-12-06  1329    * our own 
module->refcnt here, otherwise we would not be able to
ec988ad78ed6d1 Florian Fainelli      2016-12-06  1330    * unload later on.
ec988ad78ed6d1 Florian Fainelli      2016-12-06  1331    */
2db2d9d1ac3722 Ioana Ciornei         2019-05-28  1332   if (dev)
2db2d9d1ac3722 Ioana Ciornei         2019-05-28  1333           ndev_owner = 
dev->dev.parent->driver->owner;
ec988ad78ed6d1 Florian Fainelli      2016-12-06  1334   if (ndev_owner != 
bus->owner && !try_module_get(bus->owner)) {
2db2d9d1ac3722 Ioana Ciornei         2019-05-28  1335           
phydev_err(phydev, "failed to get the bus module\n");
3e3aaf64941698 Russell King          2015-09-24  1336           return -EIO;
3e3aaf64941698 Russell King          2015-09-24  1337   }
3e3aaf64941698 Russell King          2015-09-24  1338  
7322967bc1bd97 Russell King          2015-09-24  1339   get_device(d);
7322967bc1bd97 Russell King          2015-09-24  1340  
e13934563db047 Andy Fleming          2005-08-24  1341   /* Assume that if there 
is no driver, that it doesn't
2f53e9047e79b6 Sergei Shtylyov       2014-01-05  1342    * exist, and we should 
use the genphy driver.
2f53e9047e79b6 Sergei Shtylyov       2014-01-05  1343    */
ef899c0778a390 Sergei Shtylyov       2015-08-28  1344   if (!d->driver) {
257184d7cc0351 Andy Fleming          2014-01-10  1345           if 
(phydev->is_c45)
22b56e827093dd Heiner Kallweit       2019-04-07  1346                   
d->driver = &genphy_c45_driver.mdiodrv.driver;
257184d7cc0351 Andy Fleming          2014-01-10  1347           else
921690f2aa8830 Russell King          2017-06-05  1348                   
d->driver = &genphy_driver.mdiodrv.driver;
e13934563db047 Andy Fleming          2005-08-24  1349  
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1350           using_genphy = 
true;
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1351   }
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1352  
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1353   if 
(!try_module_get(d->driver->owner)) {
2db2d9d1ac3722 Ioana Ciornei         2019-05-28  1354           
phydev_err(phydev, "failed to get the device driver module\n");
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1355           err = -EIO;
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1356           goto 
error_put_device;
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1357   }
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1358  
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1359   if (using_genphy) {
e13934563db047 Andy Fleming          2005-08-24  1360           err = 
d->driver->probe(d);
b7a00ecd557859 Jeff Garzik           2006-10-01  1361           if (err >= 0)
b7a00ecd557859 Jeff Garzik           2006-10-01  1362                   err = 
device_bind_driver(d);
e13934563db047 Andy Fleming          2005-08-24  1363  
b7a00ecd557859 Jeff Garzik           2006-10-01  1364           if (err)
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1365                   goto 
error_module_put;
e13934563db047 Andy Fleming          2005-08-24  1366   }
e13934563db047 Andy Fleming          2005-08-24  1367  
e13934563db047 Andy Fleming          2005-08-24  1368   if 
(phydev->attached_dev) {
fa94f6d93c5382 Grant Likely          2009-04-25  1369           
dev_err(&dev->dev, "PHY already attached\n");
3e3aaf64941698 Russell King          2015-09-24  1370           err = -EBUSY;
3e3aaf64941698 Russell King          2015-09-24  1371           goto error;
b3565f278a9bab Ezequiel Garcia       2014-07-23  1372   }
b3565f278a9bab Ezequiel Garcia       2014-07-23  1373  
a81497bee70eb1 Russell King          2017-07-25  1374   phydev->phy_link_change 
= phy_link_change;
2db2d9d1ac3722 Ioana Ciornei         2019-05-28  1375   if (dev) {
e13934563db047 Andy Fleming          2005-08-24  1376           
phydev->attached_dev = dev;
c1f19b51d1d87f Richard Cochran       2010-07-17  1377           dev->phydev = 
phydev;
298e54fa810e02 Russell King          2019-11-15  1378  
298e54fa810e02 Russell King          2019-11-15  1379           if 
(phydev->sfp_bus_attached)
298e54fa810e02 Russell King          2019-11-15  1380                   
dev->sfp_bus = phydev->sfp_bus;
2db2d9d1ac3722 Ioana Ciornei         2019-05-28  1381   }
a3995460491d45 Florian Fainelli      2017-05-27  1382  
a3995460491d45 Florian Fainelli      2017-05-27  1383   /* Some Ethernet 
drivers try to connect to a PHY device before
a3995460491d45 Florian Fainelli      2017-05-27  1384    * calling 
register_netdevice() -> netdev_register_kobject() and
a3995460491d45 Florian Fainelli      2017-05-27  1385    * does the 
dev->dev.kobj initialization. Here we only check for
a3995460491d45 Florian Fainelli      2017-05-27  1386    * success which 
indicates that the network device kobject is
a3995460491d45 Florian Fainelli      2017-05-27  1387    * ready. Once we do 
that we still need to keep track of whether
a3995460491d45 Florian Fainelli      2017-05-27  1388    * links were 
successfully set up or not for phy_detach() to
a3995460491d45 Florian Fainelli      2017-05-27  1389    * remove them 
accordingly.
a3995460491d45 Florian Fainelli      2017-05-27  1390    */
a3995460491d45 Florian Fainelli      2017-05-27  1391   phydev->sysfs_links = 
false;
a3995460491d45 Florian Fainelli      2017-05-27  1392  
53cfca2d6b934b Vladimir Oltean       2019-05-28  1393   
phy_sysfs_create_links(phydev);
a3995460491d45 Florian Fainelli      2017-05-27  1394  
c920f745f45d46 Ioana Ciornei         2019-05-28  1395   if 
(!phydev->attached_dev) {
c920f745f45d46 Ioana Ciornei         2019-05-28  1396           err = 
sysfs_create_file(&phydev->mdio.dev.kobj,
c920f745f45d46 Ioana Ciornei         2019-05-28  1397                           
        &dev_attr_phy_standalone.attr);
c920f745f45d46 Ioana Ciornei         2019-05-28  1398           if (err)
c920f745f45d46 Ioana Ciornei         2019-05-28  1399                   
phydev_err(phydev, "error creating 'phy_standalone' sysfs entry\n");
c920f745f45d46 Ioana Ciornei         2019-05-28  1400   }
c920f745f45d46 Ioana Ciornei         2019-05-28  1401  
e7312efbd5dec5 Tao Ren               2019-10-22  1402   phydev->dev_flags |= 
flags;
e13934563db047 Andy Fleming          2005-08-24  1403  
e8a2b6a4207332 Andy Fleming          2006-12-01  1404   phydev->interface = 
interface;
e8a2b6a4207332 Andy Fleming          2006-12-01  1405  
ef24b16b5d67c8 Anton Vorontsov       2010-08-24  1406   phydev->state = 
PHY_READY;
ef24b16b5d67c8 Anton Vorontsov       2010-08-24  1407  
113c74d83eef87 Sjoerd Simons         2016-01-14  1408   /* Initial carrier 
state is off as the phy is about to be
113c74d83eef87 Sjoerd Simons         2016-01-14  1409    * (re)initialized.
113c74d83eef87 Sjoerd Simons         2016-01-14  1410    */
2db2d9d1ac3722 Ioana Ciornei         2019-05-28  1411   if (dev)
113c74d83eef87 Sjoerd Simons         2016-01-14  1412           
netif_carrier_off(phydev->attached_dev);
113c74d83eef87 Sjoerd Simons         2016-01-14  1413  
e8a2b6a4207332 Andy Fleming          2006-12-01  1414   /* Do initial 
configuration here, now that
e8a2b6a4207332 Andy Fleming          2006-12-01  1415    * we have certain key 
parameters
2f53e9047e79b6 Sergei Shtylyov       2014-01-05  1416    * (dev_flags and 
interface)
2f53e9047e79b6 Sergei Shtylyov       2014-01-05  1417    */
d005a09edf8b12 Marc Kleine-Budde     2011-03-28  1418   err = 
phy_init_hw(phydev);
d005a09edf8b12 Marc Kleine-Budde     2011-03-28  1419   if (err)
a7dac9f9c1695d Woojung Huh           2016-11-23  1420           goto error;
1211ce53077164 Sebastian Hesselbarth 2013-12-13  1421  
7d3ba9360c6dac Yoshihiro Shimoda     2020-09-09  1422   err = 
phy_disable_interrupts(phydev);
7d3ba9360c6dac Yoshihiro Shimoda     2020-09-09  1423   if (err)
7d3ba9360c6dac Yoshihiro Shimoda     2020-09-09  1424           return err;
7d3ba9360c6dac Yoshihiro Shimoda     2020-09-09  1425  
a7dac9f9c1695d Woojung Huh           2016-11-23  1426   phy_resume(phydev);
2e0bc452f47215 Zach Brown            2016-10-17  1427   
phy_led_triggers_register(phydev);
2e0bc452f47215 Zach Brown            2016-10-17  1428  
d005a09edf8b12 Marc Kleine-Budde     2011-03-28 @1429   return err;
3e3aaf64941698 Russell King          2015-09-24  1430  
3e3aaf64941698 Russell King          2015-09-24  1431  error:
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1432   /* phy_detach() does 
all of the cleanup below */
a7dac9f9c1695d Woojung Huh           2016-11-23  1433   phy_detach(phydev);
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1434   return err;
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1435  
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1436  error_module_put:
cafe8df8b9bc9a Mao Wenan             2017-01-31  1437   
module_put(d->driver->owner);
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1438  error_put_device:
6d9f66ac7fec2a Florian Fainelli      2017-02-08  1439   put_device(d);
ec988ad78ed6d1 Florian Fainelli      2016-12-06  1440   if (ndev_owner != 
bus->owner)
3e3aaf64941698 Russell King          2015-09-24  1441           
module_put(bus->owner);
3e3aaf64941698 Russell King          2015-09-24  1442   return err;
e8a2b6a4207332 Andy Fleming          2006-12-01  1443  }
257184d7cc0351 Andy Fleming          2014-01-10  1444  
EXPORT_SYMBOL(phy_attach_direct);
fa94f6d93c5382 Grant Likely          2009-04-25  1445  

:::::: The code at line 1429 was first introduced by commit
:::::: d005a09edf8b12dd1bec651b2cf94caa0e7bb1be phylib: phy_attach_direct: 
phy_init_hw can fail, add cleanup

:::::: TO: Marc Kleine-Budde <[email protected]>
:::::: CC: David S. Miller <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to