Re: [PATCH V2] fsl/fman: add missing put_devcie() call in fman_port_probe()

From: Jakub Kicinski
Date: Wed Nov 04 2020 - 20:33:25 EST


On Tue, 3 Nov 2020 19:23:23 +0800 Yu Kuai wrote:
> --- a/drivers/net/ethernet/freescale/fman/fman_port.c
> +++ b/drivers/net/ethernet/freescale/fman/fman_port.c
> @@ -1792,20 +1792,21 @@ static int fman_port_probe(struct platform_device *of_dev)
> if (!fm_node) {
> dev_err(port->dev, "%s: of_get_parent() failed\n", __func__);
> err = -ENODEV;
> - goto return_err;
> + goto free_port;
> }
>
> + of_node_put(port_node);
> fm_pdev = of_find_device_by_node(fm_node);
> of_node_put(fm_node);
> if (!fm_pdev) {
> err = -EINVAL;
> - goto return_err;
> + goto free_port;
> }

This is not right either. I just asked you fix up the order of the
error path, not move the of_node_put() in the body of the function.

Now you're releasing the reference on the object and still use it after.