* [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform devices
@ 2014-05-24 2:20 Axel Lin
2014-05-24 14:55 ` [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform dev Guenter Roeck
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Axel Lin @ 2014-05-24 2:20 UTC (permalink / raw)
To: lm-sensors
Call platform_device_unregister() rather than platform_device_put() to
unregister successfully registered platform devices.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
drivers/hwmon/nct6683.c | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c
index 540c81c..1fd6098 100644
--- a/drivers/hwmon/nct6683.c
+++ b/drivers/hwmon/nct6683.c
@@ -1389,13 +1389,15 @@ static int __init sensors_nct6683_init(void)
pdev[i] = platform_device_alloc(DRVNAME, address);
if (!pdev[i]) {
err = -ENOMEM;
- goto exit_device_put;
+ goto exit_device_unregister;
}
err = platform_device_add_data(pdev[i], &sio_data,
sizeof(struct nct6683_sio_data));
- if (err)
- goto exit_device_put;
+ if (err) {
+ platform_device_put(pdev[i]);
+ goto exit_device_unregister;
+ }
memset(&res, 0, sizeof(res));
res.name = DRVNAME;
@@ -1411,13 +1413,17 @@ static int __init sensors_nct6683_init(void)
}
err = platform_device_add_resources(pdev[i], &res, 1);
- if (err)
- goto exit_device_put;
+ if (err) {
+ platform_device_put(pdev[i]);
+ goto exit_device_unregister;
+ }
/* platform_device_add calls probe() */
err = platform_device_add(pdev[i]);
- if (err)
- goto exit_device_put;
+ if (err) {
+ platform_device_put(pdev[i]);
+ goto exit_device_unregister;
+ }
}
if (!found) {
err = -ENODEV;
@@ -1426,10 +1432,10 @@ static int __init sensors_nct6683_init(void)
return 0;
-exit_device_put:
- for (i = 0; i < ARRAY_SIZE(pdev); i++) {
+exit_device_unregister:
+ while (--i >= 0) {
if (pdev[i])
- platform_device_put(pdev[i]);
+ platform_device_unregister(pdev[i]);
}
exit_unregister:
platform_driver_unregister(&nct6683_driver);
--
1.8.3.2
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform dev
2014-05-24 2:20 [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform devices Axel Lin
@ 2014-05-24 14:55 ` Guenter Roeck
2014-05-24 15:08 ` Axel Lin
2014-05-24 15:17 ` Axel Lin
2 siblings, 0 replies; 4+ messages in thread
From: Guenter Roeck @ 2014-05-24 14:55 UTC (permalink / raw)
To: lm-sensors
On 05/23/2014 07:20 PM, Axel Lin wrote:
> Call platform_device_unregister() rather than platform_device_put() to
> unregister successfully registered platform devices.
>
> Signed-off-by: Axel Lin <axel.lin@ingics.com>
> ---
> drivers/hwmon/nct6683.c | 26 ++++++++++++++++----------
> 1 file changed, 16 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c
> index 540c81c..1fd6098 100644
> --- a/drivers/hwmon/nct6683.c
> +++ b/drivers/hwmon/nct6683.c
> @@ -1389,13 +1389,15 @@ static int __init sensors_nct6683_init(void)
> pdev[i] = platform_device_alloc(DRVNAME, address);
> if (!pdev[i]) {
> err = -ENOMEM;
> - goto exit_device_put;
> + goto exit_device_unregister;
> }
>
> err = platform_device_add_data(pdev[i], &sio_data,
> sizeof(struct nct6683_sio_data));
> - if (err)
> - goto exit_device_put;
> + if (err) {
> + platform_device_put(pdev[i]);
> + goto exit_device_unregister;
> + }
>
> memset(&res, 0, sizeof(res));
> res.name = DRVNAME;
> @@ -1411,13 +1413,17 @@ static int __init sensors_nct6683_init(void)
> }
>
> err = platform_device_add_resources(pdev[i], &res, 1);
> - if (err)
> - goto exit_device_put;
> + if (err) {
> + platform_device_put(pdev[i]);
> + goto exit_device_unregister;
> + }
>
> /* platform_device_add calls probe() */
> err = platform_device_add(pdev[i]);
> - if (err)
> - goto exit_device_put;
> + if (err) {
> + platform_device_put(pdev[i]);
> + goto exit_device_unregister;
> + }
> }
> if (!found) {
> err = -ENODEV;
> @@ -1426,10 +1432,10 @@ static int __init sensors_nct6683_init(void)
>
> return 0;
>
> -exit_device_put:
> - for (i = 0; i < ARRAY_SIZE(pdev); i++) {
> +exit_device_unregister:
> + while (--i >= 0) {
Hi Axel,
Good catch. Note that nct6775 has the same problem, if you want to tackle
the problem there as well.
I think something like
exit_device_put:
platform_device_put(pdev[i]);
exit_device_unregister:
while (--i >= 0)
platform_device_unregister(pdev[i]);
would be better though since it saves all the individual calls to
platform_device_put(). Also, the if statement in the cleanup loop
is no longer necessary.
Thanks,
Guenter
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform dev
2014-05-24 2:20 [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform devices Axel Lin
2014-05-24 14:55 ` [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform dev Guenter Roeck
@ 2014-05-24 15:08 ` Axel Lin
2014-05-24 15:17 ` Axel Lin
2 siblings, 0 replies; 4+ messages in thread
From: Axel Lin @ 2014-05-24 15:08 UTC (permalink / raw)
To: lm-sensors
> Hi Axel,
>
> Good catch. Note that nct6775 has the same problem, if you want to tackle
> the problem there as well.
I think the nct6775 code is fine, it calls
platform_device_unregister() in probe error path.
Regards,
Axel
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform dev
2014-05-24 2:20 [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform devices Axel Lin
2014-05-24 14:55 ` [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform dev Guenter Roeck
2014-05-24 15:08 ` Axel Lin
@ 2014-05-24 15:17 ` Axel Lin
2 siblings, 0 replies; 4+ messages in thread
From: Axel Lin @ 2014-05-24 15:17 UTC (permalink / raw)
To: lm-sensors
2014-05-24 23:08 GMT+08:00 Axel Lin <axel.lin@ingics.com>:
>> Hi Axel,
>>
>> Good catch. Note that nct6775 has the same problem, if you want to tackle
>> the problem there as well.
> I think the nct6775 code is fine, it calls
> platform_device_unregister() in probe error path.
Ooops, sorry.
it looks fine because I modified the code already in my local tree.
will send a fix soon.
>
> Regards,
> Axel
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-05-24 15:17 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-24 2:20 [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform devices Axel Lin
2014-05-24 14:55 ` [lm-sensors] [PATCH] hwmon: (nct6683) Fix probe unwind paths to properly unregister platform dev Guenter Roeck
2014-05-24 15:08 ` Axel Lin
2014-05-24 15:17 ` Axel Lin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.