Commit d0e51022 authored by Yang Yingliang's avatar Yang Yingliang Committed by Guenter Roeck

hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() fails

If platform_device_add() fails, it no need to call platform_device_del(), split
platform_device_unregister() into platform_device_del/put(), so platform_device_put()
can be called separately.

Fixes: 8808a793 ("ibmaem: new driver for power/energy/temp meters in IBM System X hardware")
Reported-by: default avatarHulk Robot <hulkci@huawei.com>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20220701074153.4021556-1-yangyingliang@huawei.comSigned-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent f0aa153b
...@@ -550,7 +550,7 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle) ...@@ -550,7 +550,7 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle)
res = platform_device_add(data->pdev); res = platform_device_add(data->pdev);
if (res) if (res)
goto ipmi_err; goto dev_add_err;
platform_set_drvdata(data->pdev, data); platform_set_drvdata(data->pdev, data);
...@@ -598,7 +598,9 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle) ...@@ -598,7 +598,9 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle)
ipmi_destroy_user(data->ipmi.user); ipmi_destroy_user(data->ipmi.user);
ipmi_err: ipmi_err:
platform_set_drvdata(data->pdev, NULL); platform_set_drvdata(data->pdev, NULL);
platform_device_unregister(data->pdev); platform_device_del(data->pdev);
dev_add_err:
platform_device_put(data->pdev);
dev_err: dev_err:
ida_free(&aem_ida, data->id); ida_free(&aem_ida, data->id);
id_err: id_err:
...@@ -690,7 +692,7 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe, ...@@ -690,7 +692,7 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe,
res = platform_device_add(data->pdev); res = platform_device_add(data->pdev);
if (res) if (res)
goto ipmi_err; goto dev_add_err;
platform_set_drvdata(data->pdev, data); platform_set_drvdata(data->pdev, data);
...@@ -738,7 +740,9 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe, ...@@ -738,7 +740,9 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe,
ipmi_destroy_user(data->ipmi.user); ipmi_destroy_user(data->ipmi.user);
ipmi_err: ipmi_err:
platform_set_drvdata(data->pdev, NULL); platform_set_drvdata(data->pdev, NULL);
platform_device_unregister(data->pdev); platform_device_del(data->pdev);
dev_add_err:
platform_device_put(data->pdev);
dev_err: dev_err:
ida_free(&aem_ida, data->id); ida_free(&aem_ida, data->id);
id_err: id_err:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment