[SCSI] scsi_debug: must_check fixes
authorRandy Dunlap <rdunlap@xenotime.net>
Wed, 12 Jul 2006 03:53:22 +0000 (20:53 -0700)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Wed, 12 Jul 2006 15:57:28 +0000 (11:57 -0400)
Check all __must_check warnings in scsi_debug.

Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Douglas Gilbert <dougg@torque.net>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/scsi_debug.c

index 9c63b00..a80303c 100644 (file)
@@ -286,7 +286,7 @@ static int inquiry_evpd_83(unsigned char * arr, int target_dev_id,
                           int dev_id_num, const char * dev_id_str,
                           int dev_id_str_len);
 static int inquiry_evpd_88(unsigned char * arr, int target_dev_id);
-static void do_create_driverfs_files(void);
+static int do_create_driverfs_files(void);
 static void do_remove_driverfs_files(void);
 
 static int sdebug_add_adapter(void);
@@ -2487,19 +2487,22 @@ static ssize_t sdebug_add_host_store(struct device_driver * ddp,
 DRIVER_ATTR(add_host, S_IRUGO | S_IWUSR, sdebug_add_host_show, 
            sdebug_add_host_store);
 
-static void do_create_driverfs_files(void)
+static int do_create_driverfs_files(void)
 {
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_add_host);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_delay);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_dev_size_mb);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_dsense);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_every_nth);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_max_luns);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_num_tgts);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_num_parts);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_ptype);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_opts);
-       driver_create_file(&sdebug_driverfs_driver, &driver_attr_scsi_level);
+       int ret;
+
+       ret = driver_create_file(&sdebug_driverfs_driver, &driver_attr_add_host);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_delay);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_dev_size_mb);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_dsense);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_every_nth);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_max_luns);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_num_tgts);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_num_parts);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_ptype);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_opts);
+       ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_scsi_level);
+       return ret;
 }
 
 static void do_remove_driverfs_files(void)
@@ -2522,6 +2525,7 @@ static int __init scsi_debug_init(void)
        unsigned int sz;
        int host_to_add;
        int k;
+       int ret;
 
        if (scsi_debug_dev_size_mb < 1)
                scsi_debug_dev_size_mb = 1;  /* force minimum 1 MB ramdisk */
@@ -2560,12 +2564,32 @@ static int __init scsi_debug_init(void)
        if (scsi_debug_num_parts > 0)
                sdebug_build_parts(fake_storep);
 
-       init_all_queued();
+       ret = device_register(&pseudo_primary);
+       if (ret < 0) {
+               printk(KERN_WARNING "scsi_debug: device_register error: %d\n",
+                       ret);
+               goto free_vm;
+       }
+       ret = bus_register(&pseudo_lld_bus);
+       if (ret < 0) {
+               printk(KERN_WARNING "scsi_debug: bus_register error: %d\n",
+                       ret);
+               goto dev_unreg;
+       }
+       ret = driver_register(&sdebug_driverfs_driver);
+       if (ret < 0) {
+               printk(KERN_WARNING "scsi_debug: driver_register error: %d\n",
+                       ret);
+               goto bus_unreg;
+       }
+       ret = do_create_driverfs_files();
+       if (ret < 0) {
+               printk(KERN_WARNING "scsi_debug: driver_create_file error: %d\n",
+                       ret);
+               goto del_files;
+       }
 
-       device_register(&pseudo_primary);
-       bus_register(&pseudo_lld_bus);
-       driver_register(&sdebug_driverfs_driver);
-       do_create_driverfs_files();
+       init_all_queued();
 
        sdebug_driver_template.proc_name = (char *)sdebug_proc_name;
 
@@ -2585,6 +2609,18 @@ static int __init scsi_debug_init(void)
                       scsi_debug_add_host);
        }
        return 0;
+
+del_files:
+       do_remove_driverfs_files();
+       driver_unregister(&sdebug_driverfs_driver);
+bus_unreg:
+       bus_unregister(&pseudo_lld_bus);
+dev_unreg:
+       device_unregister(&pseudo_primary);
+free_vm:
+       vfree(fake_storep);
+
+       return ret;
 }
 
 static void __exit scsi_debug_exit(void)