From: Ioana Ciornei ioana.ciornei@nxp.com
mainline inclusion from mainline-v5.14-rc1 commit 7e33d84db1a8a6c3000e9b02c074c17819680755 category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAYRIU CVE: CVE-2022-48961
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i...
--------------------------------
Use the newly introduced helper to setup both the of_node and the fwnode for a given device.
Signed-off-by: Ioana Ciornei ioana.ciornei@nxp.com Signed-off-by: David S. Miller davem@davemloft.net Conflicts: drivers/net/mdio/fwnode_mdio.c [bc1bee3b87ee ("net: mdiobus: Introduce fwnode_mdiobus_register_phy()") not merged] Signed-off-by: Zhang Changzhong zhangchangzhong@huawei.com --- drivers/net/mdio/of_mdio.c | 9 ++++----- drivers/net/phy/mdio_bus.c | 3 +-- 2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mdio/of_mdio.c b/drivers/net/mdio/of_mdio.c index 5bae47f..e6ae226 100644 --- a/drivers/net/mdio/of_mdio.c +++ b/drivers/net/mdio/of_mdio.c @@ -151,6 +151,7 @@ static int of_mdiobus_register_phy(struct mii_bus *mdio, static int of_mdiobus_register_device(struct mii_bus *mdio, struct device_node *child, u32 addr) { + struct fwnode_handle *fwnode = of_fwnode_handle(child); struct mdio_device *mdiodev; int rc;
@@ -161,9 +162,8 @@ static int of_mdiobus_register_device(struct mii_bus *mdio, /* Associate the OF node with the device structure so it * can be looked up later. */ - of_node_get(child); - mdiodev->dev.of_node = child; - mdiodev->dev.fwnode = of_fwnode_handle(child); + fwnode_handle_get(fwnode); + device_set_node(&mdiodev->dev, fwnode);
/* All data is now stored in the mdiodev struct; register it. */ rc = mdio_device_register(mdiodev); @@ -262,8 +262,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) * the device tree are populated after the bus has been registered */ mdio->phy_mask = ~0;
- mdio->dev.of_node = np; - mdio->dev.fwnode = of_fwnode_handle(np); + device_set_node(&mdio->dev, of_fwnode_handle(np));
/* Get bus level PHY reset GPIO details */ mdio->reset_delay_us = DEFAULT_GPIO_RESET_DELAY; diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index c1cbdac..43500d0 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -458,8 +458,7 @@ static void of_mdiobus_link_mdiodev(struct mii_bus *bus, continue;
if (addr == mdiodev->addr) { - dev->of_node = child; - dev->fwnode = of_fwnode_handle(child); + device_set_node(dev, of_fwnode_handle(child)); return; } }