Re: [PATCH] hwmon/abituguru: handle sysfs errors

From: Hans de Goede
Date: Tue Oct 10 2006 - 03:29:08 EST


Hi Jean, Jeff,

You (Jean) already mailed me about this and it was on my todo list, but I'm currently rather busy with work. So it looks like Jeff beat me to it.

Jeff's patch looks fine, please apply. Thanks Jeff!

Regards,

Hans

Signed-off-by: Hans de Goede <j.w.r.degoede@xxxxxx>
Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>

---

drivers/hwmon/abituguru.c | 30 +++++++++++++++++++++++++-----
1 file changed, 25 insertions(+), 5 deletions(-)

2b10f648c8ed965369976eb7925b922ee187ce21
diff --git a/drivers/hwmon/abituguru.c b/drivers/hwmon/abituguru.c
index e5cb0fd..3ded982 100644
--- a/drivers/hwmon/abituguru.c
+++ b/drivers/hwmon/abituguru.c
@@ -1271,14 +1271,34 @@ static int __devinit abituguru_probe(str
res = PTR_ERR(data->class_dev);
goto abituguru_probe_error;
}
- for (i = 0; i < sysfs_attr_i; i++)
- device_create_file(&pdev->dev, &data->sysfs_attr[i].dev_attr);
- for (i = 0; i < ARRAY_SIZE(abituguru_sysfs_attr); i++)
- device_create_file(&pdev->dev,
- &abituguru_sysfs_attr[i].dev_attr);
+ for (i = 0; i < sysfs_attr_i; i++) {
+ res = device_create_file(&pdev->dev,
+ &data->sysfs_attr[i].dev_attr);
+ if (res) {
+ for (j = 0; j < i; j++)
+ device_remove_file(&pdev->dev,
+ &data->sysfs_attr[j].dev_attr);
+ goto err_devreg;
+ }
+ }
+ for (i = 0; i < ARRAY_SIZE(abituguru_sysfs_attr); i++) {
+ res = device_create_file(&pdev->dev,
+ &abituguru_sysfs_attr[i].dev_attr);
+ if (res) {
+ for (j = 0; j < i; j++)
+ device_remove_file(&pdev->dev,
+ &abituguru_sysfs_attr[j].dev_attr);
+ goto err_attr_i;
+ }
+ }

return 0;

+err_attr_i:
+ for (i = 0; i < sysfs_attr_i; i++)
+ device_remove_file(&pdev->dev, &data->sysfs_attr[i].dev_attr);
+err_devreg:
+ hwmon_device_unregister(data->class_dev);
abituguru_probe_error:
kfree(data);
return res;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/