Add the missing destroy_workqueue() before return from
i3c_master_register in the error handling case.

Signed-off-by: Qinglang Miao <[email protected]>
---
 drivers/i3c/master.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index cc7564446..c45b59bb7 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -2514,7 +2514,7 @@ int i3c_master_register(struct i3c_master_controller 
*master,
 
        ret = i3c_master_bus_init(master);
        if (ret)
-               goto err_put_dev;
+               goto err_destroy_wq;
 
        ret = device_add(&master->dev);
        if (ret)
@@ -2545,6 +2545,9 @@ int i3c_master_register(struct i3c_master_controller 
*master,
 err_cleanup_bus:
        i3c_master_bus_cleanup(master);
 
+err_destroy_wq:
+       destroy_workqueue(master->wq);
+
 err_put_dev:
        put_device(&master->dev);
 
-- 
2.23.0

Reply via email to