Messages in this thread Patch in this message | | | From | Qing Wang <> | Subject | [PATCH] ethernet: fman: add missing put_device() call in mac_probe() | Date | Tue, 7 Dec 2021 04:56:00 -0800 |
| |
From: Wang Qing <wangqing@vivo.com>
of_find_device_by_node() takes a reference to the embedded struct device which needs to be dropped when error return.
Add a jump target to fix the exception handling for this function implementation.
Signed-off-by: Wang Qing <wangqing@vivo.com> --- drivers/net/ethernet/freescale/fman/mac.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fman/mac.c b/drivers/net/ethernet/freescale/fman/mac.c index d9fc5c4..5180121 --- a/drivers/net/ethernet/freescale/fman/mac.c +++ b/drivers/net/ethernet/freescale/fman/mac.c @@ -668,7 +668,7 @@ static int mac_probe(struct platform_device *_of_dev) if (err) { dev_err(dev, "failed to read cell-index for %pOF\n", dev_node); err = -EINVAL; - goto _return_of_node_put; + goto _return_of_put_device; } /* cell-index 0 => FMan id 1 */ fman_id = (u8)(val + 1); @@ -677,7 +677,7 @@ static int mac_probe(struct platform_device *_of_dev) if (!priv->fman) { dev_err(dev, "fman_bind(%pOF) failed\n", dev_node); err = -ENODEV; - goto _return_of_node_put; + goto _return_of_put_device; } of_node_put(dev_node); @@ -758,7 +758,7 @@ static int mac_probe(struct platform_device *_of_dev) dev_err(dev, "of_find_device_by_node(%pOF) failed\n", dev_node); err = -EINVAL; - goto _return_of_node_put; + goto _return_of_put_device; } mac_dev->port[i] = fman_port_bind(&of_dev->dev); @@ -766,7 +766,7 @@ static int mac_probe(struct platform_device *_of_dev) dev_err(dev, "dev_get_drvdata(%pOF) failed\n", dev_node); err = -EINVAL; - goto _return_of_node_put; + goto _return_of_put_device; } of_node_put(dev_node); } @@ -863,6 +863,8 @@ static int mac_probe(struct platform_device *_of_dev) goto _return; +_return_of_put_device: + put_device(&of_dev->dev); _return_of_node_put: of_node_put(dev_node); _return_of_get_parent: -- 2.7.4
| |