Message ID | 20220701074153.4021556-1-yangyingliang@huawei.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() fails | expand |
On Fri, Jul 01, 2022 at 03:41:53PM +0800, Yang Yingliang wrote: > 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: 8808a793f052 ("ibmaem: new driver for power/energy/temp meters in IBM System X hardware") > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Applied. Thanks, Guenter > --- > drivers/hwmon/ibmaem.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c > index 5c4cf742f5ae..157e232aace0 100644 > --- a/drivers/hwmon/ibmaem.c > +++ b/drivers/hwmon/ibmaem.c > @@ -550,7 +550,7 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle) > > res = platform_device_add(data->pdev); > if (res) > - goto ipmi_err; > + goto dev_add_err; > > platform_set_drvdata(data->pdev, data); > > @@ -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_err: > 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: > ida_free(&aem_ida, data->id); > id_err: > @@ -690,7 +692,7 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe, > > res = platform_device_add(data->pdev); > if (res) > - goto ipmi_err; > + goto dev_add_err; > > platform_set_drvdata(data->pdev, data); > > @@ -738,7 +740,9 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe, > ipmi_destroy_user(data->ipmi.user); > ipmi_err: > 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: > ida_free(&aem_ida, data->id); > id_err:
diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c index 5c4cf742f5ae..157e232aace0 100644 --- a/drivers/hwmon/ibmaem.c +++ b/drivers/hwmon/ibmaem.c @@ -550,7 +550,7 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle) res = platform_device_add(data->pdev); if (res) - goto ipmi_err; + goto dev_add_err; platform_set_drvdata(data->pdev, data); @@ -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_err: 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: ida_free(&aem_ida, data->id); id_err: @@ -690,7 +692,7 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe, res = platform_device_add(data->pdev); if (res) - goto ipmi_err; + goto dev_add_err; platform_set_drvdata(data->pdev, data); @@ -738,7 +740,9 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe, ipmi_destroy_user(data->ipmi.user); ipmi_err: 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: ida_free(&aem_ida, data->id); id_err:
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: 8808a793f052 ("ibmaem: new driver for power/energy/temp meters in IBM System X hardware") Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> --- drivers/hwmon/ibmaem.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)