From: Russell King (Oracle) Date: Wed, 7 Jun 2023 11:58:54 +0000 (+0100) Subject: net: pcs: lynx: check that the fwnode is available prior to use X-Git-Tag: v6.6.17~4555^2~146^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d143898c6d7b7f9b171ddc76cd9a3d8356bfddd5;p=platform%2Fkernel%2Flinux-rpi.git net: pcs: lynx: check that the fwnode is available prior to use Check that the fwnode is marked as available prior to trying to lookup the PCS device, and return -ENODEV if unavailable. Document the return codes from lynx_pcs_create_fwnode(). Signed-off-by: Russell King (Oracle) Signed-off-by: Jakub Kicinski --- diff --git a/drivers/net/pcs/pcs-lynx.c b/drivers/net/pcs/pcs-lynx.c index c2d01da..fca48eb 100644 --- a/drivers/net/pcs/pcs-lynx.c +++ b/drivers/net/pcs/pcs-lynx.c @@ -6,6 +6,7 @@ #include #include #include +#include #define SGMII_CLOCK_PERIOD_NS 8 /* PCS is clocked at 125 MHz */ #define LINK_TIMER_VAL(ns) ((u32)((ns) / SGMII_CLOCK_PERIOD_NS)) @@ -346,11 +347,24 @@ struct phylink_pcs *lynx_pcs_create_mdiodev(struct mii_bus *bus, int addr) } EXPORT_SYMBOL(lynx_pcs_create_mdiodev); +/* + * lynx_pcs_create_fwnode() creates a lynx PCS instance from the fwnode + * device indicated by node. + * + * Returns: + * -ENODEV if the fwnode is marked unavailable + * -EPROBE_DEFER if we fail to find the device + * -ENOMEM if we fail to allocate memory + * pointer to a phylink_pcs on success + */ struct phylink_pcs *lynx_pcs_create_fwnode(struct fwnode_handle *node) { struct mdio_device *mdio; struct phylink_pcs *pcs; + if (!fwnode_device_is_available(node)) + return ERR_PTR(-ENODEV); + mdio = fwnode_mdio_find_device(node); if (!mdio) return ERR_PTR(-EPROBE_DEFER);