net: fman: memac: free mdio device if lynx_pcs_create() fails
authorVladimir Oltean <vladimir.oltean@nxp.com>
Mon, 30 Jan 2023 19:30:51 +0000 (21:30 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 1 Feb 2023 05:05:09 +0000 (21:05 -0800)
When memory allocation fails in lynx_pcs_create() and it returns NULL,
there remains a dangling reference to the mdiodev returned by
of_mdio_find_device() which is leaked as soon as memac_pcs_create()
returns empty-handed.

Fixes: a7c2a32e7f22 ("net: fman: memac: Use lynx pcs driver")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Sean Anderson <sean.anderson@seco.com>
Acked-by: Madalin Bucur <madalin.bucur@oss.nxp.com>
Link: https://lore.kernel.org/r/20230130193051.563315-1-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/fman/fman_memac.c

index 9349f841bd0645a068d4538c81ea461df177e531..587ad81a2dc3293b77d6e702b144b6d47ac4aff0 100644 (file)
@@ -1055,6 +1055,9 @@ static struct phylink_pcs *memac_pcs_create(struct device_node *mac_node,
                return ERR_PTR(-EPROBE_DEFER);
 
        pcs = lynx_pcs_create(mdiodev);
+       if (!pcs)
+               mdio_device_free(mdiodev);
+
        return pcs;
 }