Commit 58968fc8 authored by Hannes Reinecke's avatar Hannes Reinecke Committed by James Bottomley

[SCSI] megaraid_sas: check return value for megasas_get_pd_list()

When megasas_get_pd_list() fails we cannot detect any drives,
so we should be checking the return value accordingly.

[jejb: checkpatch fix]
Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
Acked-by: default avatarKashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 2f8bdfa8
...@@ -3763,7 +3763,10 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -3763,7 +3763,10 @@ static int megasas_init_fw(struct megasas_instance *instance)
memset(instance->pd_list, 0 , memset(instance->pd_list, 0 ,
(MEGASAS_MAX_PD * sizeof(struct megasas_pd_list))); (MEGASAS_MAX_PD * sizeof(struct megasas_pd_list)));
megasas_get_pd_list(instance); if (megasas_get_pd_list(instance) < 0) {
printk(KERN_ERR "megasas: failed to get PD list\n");
goto fail_init_adapter;
}
memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS); memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS);
if (megasas_ld_list_query(instance, if (megasas_ld_list_query(instance,
...@@ -5592,22 +5595,23 @@ megasas_aen_polling(struct work_struct *work) ...@@ -5592,22 +5595,23 @@ megasas_aen_polling(struct work_struct *work)
if (doscan) { if (doscan) {
printk(KERN_INFO "scanning ...\n"); printk(KERN_INFO "scanning ...\n");
megasas_get_pd_list(instance); if (megasas_get_pd_list(instance) == 0) {
for (i = 0; i < MEGASAS_MAX_PD_CHANNELS; i++) { for (i = 0; i < MEGASAS_MAX_PD_CHANNELS; i++) {
for (j = 0; j < MEGASAS_MAX_DEV_PER_CHANNEL; j++) { for (j = 0; j < MEGASAS_MAX_DEV_PER_CHANNEL; j++) {
pd_index = i*MEGASAS_MAX_DEV_PER_CHANNEL + j; pd_index = i*MEGASAS_MAX_DEV_PER_CHANNEL + j;
sdev1 = scsi_device_lookup(host, i, j, 0); sdev1 = scsi_device_lookup(host, i, j, 0);
if (instance->pd_list[pd_index].driveState == if (instance->pd_list[pd_index].driveState ==
MR_PD_STATE_SYSTEM) { MR_PD_STATE_SYSTEM) {
if (!sdev1) { if (!sdev1) {
scsi_add_device(host, i, j, 0); scsi_add_device(host, i, j, 0);
} }
if (sdev1) if (sdev1)
scsi_device_put(sdev1); scsi_device_put(sdev1);
} else { } else {
if (sdev1) { if (sdev1) {
scsi_remove_device(sdev1); scsi_remove_device(sdev1);
scsi_device_put(sdev1); scsi_device_put(sdev1);
}
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment