diff options
author | Kashyap, Desai <kashyap.desai@lsi.com> | 2009-08-07 10:03:17 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-08-13 17:25:31 -0400 |
commit | 15052c9e85bf0cdadcb69eb89623bf12bad8b4f8 (patch) | |
tree | 439a830a40807909ccddc5ed764eb31c70c28ac2 /drivers/scsi/mpt2sas/mpt2sas_scsih.c | |
parent | 3493e84de60590d3012139187f631f2dfbf0887f (diff) |
[SCSI] mpt2sas: Introduced check for enclosure_handle to avoid crash
Kernel panic is seen because of enclosure_handle received from FW is zero.
Check is introduced before calling mpt2sas_config_get_enclosure_pg0.
Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_scsih.c')
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index 2a01a5f2a84d..b1326bf78c9a 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c | |||
@@ -3663,12 +3663,11 @@ _scsih_add_device(struct MPT2SAS_ADAPTER *ioc, u16 handle, u8 phy_num, u8 is_pd) | |||
3663 | sas_device->hidden_raid_component = is_pd; | 3663 | sas_device->hidden_raid_component = is_pd; |
3664 | 3664 | ||
3665 | /* get enclosure_logical_id */ | 3665 | /* get enclosure_logical_id */ |
3666 | if (!(mpt2sas_config_get_enclosure_pg0(ioc, &mpi_reply, &enclosure_pg0, | 3666 | if (sas_device->enclosure_handle && !(mpt2sas_config_get_enclosure_pg0( |
3667 | MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE, | 3667 | ioc, &mpi_reply, &enclosure_pg0, MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE, |
3668 | sas_device->enclosure_handle))) { | 3668 | sas_device->enclosure_handle))) |
3669 | sas_device->enclosure_logical_id = | 3669 | sas_device->enclosure_logical_id = |
3670 | le64_to_cpu(enclosure_pg0.EnclosureLogicalID); | 3670 | le64_to_cpu(enclosure_pg0.EnclosureLogicalID); |
3671 | } | ||
3672 | 3671 | ||
3673 | /* get device name */ | 3672 | /* get device name */ |
3674 | sas_device->device_name = le64_to_cpu(sas_device_pg0.DeviceName); | 3673 | sas_device->device_name = le64_to_cpu(sas_device_pg0.DeviceName); |