]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: ethernet: mtk_eth_wed: add missing put_device() in mtk_wed_add_hw()
authorYang Yingliang <yangyingliang@huawei.com>
Mon, 17 Oct 2022 03:51:55 +0000 (11:51 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Oct 2022 08:35:05 +0000 (09:35 +0100)
After calling get_device() in mtk_wed_add_hw(), in error path, put_device()
needs be called.

Fixes: 7e7e0fcc79f5 ("net: ethernet: mtk_eth_soc: add support for Wireless Ethernet Dispatch (WED)")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mediatek/mtk_wed.c

index 099b6e0df619a9cd580d69058504e2a32393a529..09bbd05bd83c1ffe017ef7a3d7a2618c53d657cd 100644 (file)
@@ -1077,11 +1077,11 @@ void mtk_wed_add_hw(struct device_node *np, struct mtk_eth *eth,
        get_device(&pdev->dev);
        irq = platform_get_irq(pdev, 0);
        if (irq < 0)
-               return;
+               goto err_put_device;
 
        regs = syscon_regmap_lookup_by_phandle(np, NULL);
        if (IS_ERR(regs))
-               return;
+               goto err_put_device;
 
        rcu_assign_pointer(mtk_soc_wed_ops, &wed_ops);
 
@@ -1124,8 +1124,14 @@ void mtk_wed_add_hw(struct device_node *np, struct mtk_eth *eth,
 
        hw_list[index] = hw;
 
+       mutex_unlock(&hw_lock);
+
+       return;
+
 unlock:
        mutex_unlock(&hw_lock);
+err_put_device:
+       put_device(&pdev->dev);
 }
 
 void mtk_wed_exit(void)