The function calls fwnode_get_named_child_node() to check for a "fixed-link" child. It did not release the reference if present, causing a refcount leak. Fixes: dfce1bab8fdc ("net: mvpp2: enable using phylink with ACPI") Signed-off-by: Miaoqian Lin --- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index 8ebb985d2573..1faed2ec3f4f 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -6801,12 +6801,22 @@ static void mvpp2_acpi_start(struct mvpp2_port *port) */ static bool mvpp2_use_acpi_compat_mode(struct fwnode_handle *port_fwnode) { + struct fwnode_handle *fixed_link; + if (!is_acpi_node(port_fwnode)) return false; - return (!fwnode_property_present(port_fwnode, "phy-handle") && - !fwnode_property_present(port_fwnode, "managed") && - !fwnode_get_named_child_node(port_fwnode, "fixed-link")); + if (fwnode_property_present(port_fwnode, "phy-handle") || + fwnode_property_present(port_fwnode, "managed")) + return false; + + fixed_link = fwnode_get_named_child_node(port_fwnode, "fixed-link"); + if (fixed_link) { + fwnode_handle_put(fixed_link); + return false; + } + + return true; } /* Ports initialization */ -- 2.35.1