[SCSI] hosts.c: fixes for "no error" reported after error scenarios
This patch corrects some cases in scsi_add_host() that fail, but the "error" return code was not reset after a prior use which set it to a non-error value. Patch cut against scsi-rc-fixes-2.6 Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
0feed274d2
commit
77cca462c6
|
@ -218,18 +218,24 @@ int scsi_add_host(struct Scsi_Host *shost, struct device *dev)
|
||||||
|
|
||||||
get_device(&shost->shost_gendev);
|
get_device(&shost->shost_gendev);
|
||||||
|
|
||||||
if (shost->transportt->host_size &&
|
if (shost->transportt->host_size) {
|
||||||
(shost->shost_data = kzalloc(shost->transportt->host_size,
|
shost->shost_data = kzalloc(shost->transportt->host_size,
|
||||||
GFP_KERNEL)) == NULL)
|
GFP_KERNEL);
|
||||||
goto out_del_classdev;
|
if (shost->shost_data == NULL) {
|
||||||
|
error = -ENOMEM;
|
||||||
|
goto out_del_classdev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (shost->transportt->create_work_queue) {
|
if (shost->transportt->create_work_queue) {
|
||||||
snprintf(shost->work_q_name, KOBJ_NAME_LEN, "scsi_wq_%d",
|
snprintf(shost->work_q_name, KOBJ_NAME_LEN, "scsi_wq_%d",
|
||||||
shost->host_no);
|
shost->host_no);
|
||||||
shost->work_q = create_singlethread_workqueue(
|
shost->work_q = create_singlethread_workqueue(
|
||||||
shost->work_q_name);
|
shost->work_q_name);
|
||||||
if (!shost->work_q)
|
if (!shost->work_q) {
|
||||||
|
error = -EINVAL;
|
||||||
goto out_free_shost_data;
|
goto out_free_shost_data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
error = scsi_sysfs_add_host(shost);
|
error = scsi_sysfs_add_host(shost);
|
||||||
|
|
Loading…
Reference in New Issue