[SCSI] mpt2sas: Release spinlock for the raid device list before blocking it
Added code to release the spinlock that is used to protect the raid device list before calling a function that can block. The blocking was causing a reschedule, and subsequently it is tried to acquire the same lock, resulting in a panic (NMI Watchdog detecting a CPU lockup). Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com> Cc: stable@kernel.org Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
a6affbd5cc
commit
30c43282f3
|
@ -6749,6 +6749,7 @@ _scsih_mark_responding_raid_device(struct MPT2SAS_ADAPTER *ioc, u64 wwid,
|
|||
} else
|
||||
sas_target_priv_data = NULL;
|
||||
raid_device->responding = 1;
|
||||
spin_unlock_irqrestore(&ioc->raid_device_lock, flags);
|
||||
starget_printk(KERN_INFO, raid_device->starget,
|
||||
"handle(0x%04x), wwid(0x%016llx)\n", handle,
|
||||
(unsigned long long)raid_device->wwid);
|
||||
|
@ -6759,16 +6760,16 @@ _scsih_mark_responding_raid_device(struct MPT2SAS_ADAPTER *ioc, u64 wwid,
|
|||
*/
|
||||
_scsih_init_warpdrive_properties(ioc, raid_device);
|
||||
if (raid_device->handle == handle)
|
||||
goto out;
|
||||
return;
|
||||
printk(KERN_INFO "\thandle changed from(0x%04x)!!!\n",
|
||||
raid_device->handle);
|
||||
raid_device->handle = handle;
|
||||
if (sas_target_priv_data)
|
||||
sas_target_priv_data->handle = handle;
|
||||
goto out;
|
||||
return;
|
||||
}
|
||||
}
|
||||
out:
|
||||
|
||||
spin_unlock_irqrestore(&ioc->raid_device_lock, flags);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue