if (!data) {\r
printk("[%s] kzalloc error\n", __FUNCTION__);\r
err = -ENOMEM;\r
- goto alloc_err;\r
+ platform_device_unregister(&the_pdev);\r
+ return err;\r
}\r
\r
dev_set_drvdata(&the_pdev.dev, (void*)data);\r
err = sysfs_test_create_file(&the_pdev.dev);\r
if (err) {\r
printk("sysfs_create_file error\n");\r
- goto sysfs_err;\r
+ kfree(data);\r
}\r
\r
return 0;\r
-\r
-sysfs_err:\r
- kfree(data);\r
-\r
-alloc_err:\r
- platform_device_unregister(&the_pdev);\r
- return err;\r
}\r
\r
static void __exit sysfs_test_exit(void) \r
\r
static int __init sysfs_test_init(void) \r
{\r
- int err;\r
+ int err, i;\r
printk("[%s] \n", __FUNCTION__);\r
\r
mtd_class = class_create(THIS_MODULE, "power_supply");\r
mtd_device = device_create(mtd_class, NULL, (dev_t)NULL, NULL, "battery");\r
\r
- err = device_create_file(mtd_device, &ps_device_attributes[0]);\r
- err = device_create_file(mtd_device, &ps_device_attributes[1]);\r
- err = device_create_file(mtd_device, &ps_device_attributes[2]);\r
-\r
+ for (i = 0; i < 3; i++) {
+ err = device_create_file(mtd_device, &ps_device_attributes[i]);\r
+ if (err) {
+ while (--i >= 0)
+ device_remove_file(mtd_device, &ps_device_attributes[i]);
+
+ device_unregister(mtd_device);
+ return err;
+ }
+ }\r
+
return 0;\r
}\r
\r
if (!data) {\r
printk("[%s] kzalloc error\n", __FUNCTION__);\r
err = -ENOMEM;\r
- goto alloc_err;\r
+ platform_device_unregister(&the_pdev);\r
+ return err;\r
}\r
\r
dev_set_drvdata(&the_pdev.dev, (void*)data);\r
err = sysfs_lun0_create_file(&the_pdev_sub1.dev);\r
if (err) {\r
printk("sysfs_create_file error\n");\r
- goto sysfs_err;\r
+ kfree(data);\r
}\r
\r
err = sysfs_lun1_create_file(&the_pdev_sub2.dev);\r
if (err) {\r
printk("sysfs_create_file error\n");\r
- goto sysfs_err;\r
+ kfree(data);\r
}\r
-\r
+ \r
return 0;\r
-\r
-sysfs_err:\r
- kfree(data);\r
-\r
-alloc_err:\r
- platform_device_unregister(&the_pdev);\r
- return err;\r
}\r
\r
static void __exit sysfs_test_exit(void) \r
if (!data) {\r
printk("[%s] kzalloc error\n", __FUNCTION__);\r
err = -ENOMEM;\r
- goto alloc_err;\r
+ platform_device_unregister(&the_pdev);\r
+ return err;\r
}\r
\r
dev_set_drvdata(&the_pdev.dev, (void*)data);\r
err = sysfs_test_create_file(&the_pdev.dev);\r
if (err) {\r
printk("sysfs_create_file error\n");\r
- goto sysfs_err;\r
+ kfree(data);\r
}\r
\r
return 0;\r
-\r
-sysfs_err:\r
- kfree(data);\r
-\r
-alloc_err:\r
- platform_device_unregister(&the_pdev);\r
- return err;\r
}\r
\r
static void __exit sysfs_test_exit(void) \r