[SCSI] zfcp: proper use of device register
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Tue, 18 Aug 2009 13:43:29 +0000 (15:43 +0200)
committerJames Bottomley <James.Bottomley@suse.de>
Sat, 5 Sep 2009 13:49:44 +0000 (08:49 -0500)
Don't use kfree directly after device registration started.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/s390/scsi/zfcp_aux.c

index 8e98915..a795444 100644 (file)
@@ -309,8 +309,10 @@ struct zfcp_unit *zfcp_unit_enqueue(struct zfcp_port *port, u64 fcp_lun)
        }
        read_unlock_irq(&zfcp_data.config_lock);
 
-       if (device_register(&unit->sysfs_device))
-               goto err_out_free;
+       if (device_register(&unit->sysfs_device)) {
+               put_device(&unit->sysfs_device);
+               return ERR_PTR(-EINVAL);
+       }
 
        if (sysfs_create_group(&unit->sysfs_device.kobj,
                               &zfcp_sysfs_unit_attrs)) {
@@ -675,8 +677,10 @@ struct zfcp_port *zfcp_port_enqueue(struct zfcp_adapter *adapter, u64 wwpn,
        }
        read_unlock_irq(&zfcp_data.config_lock);
 
-       if (device_register(&port->sysfs_device))
-               goto err_out_free;
+       if (device_register(&port->sysfs_device)) {
+               put_device(&port->sysfs_device);
+               goto err_out;
+       }
 
        retval = sysfs_create_group(&port->sysfs_device.kobj,
                                    &zfcp_sysfs_port_attrs);