[SCSI] mpt2sas: Before removing sas_device search device in list for _scsih_sas_device_remove
Fix a oops in _scsih_sas_device_remove. The driver was attempting to delete a object from the sas_device link list when the object was not present. Added sanity check for sas_device NULL dereference. before deleting sas_device now driver will search device in list then only it will follow device removal. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
Родитель
130b958a5d
Коммит
980ead3180
|
@ -537,10 +537,15 @@ _scsih_sas_device_remove(struct MPT2SAS_ADAPTER *ioc,
|
|||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (!sas_device)
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&ioc->sas_device_lock, flags);
|
||||
list_del(&sas_device->list);
|
||||
memset(sas_device, 0, sizeof(struct _sas_device));
|
||||
kfree(sas_device);
|
||||
if (mpt2sas_scsih_sas_device_find_by_sas_address(ioc,
|
||||
sas_device->sas_address)) {
|
||||
list_del(&sas_device->list);
|
||||
kfree(sas_device);
|
||||
}
|
||||
spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче