[SCSI] Fix module removal/device add race
This patch (as546) fixes an oops-causing failure to check the return code from scsi_device_get. The call can return an error if the LLD is being unloaded from memory. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
f631b4be76
commit
b70d37bf61
|
@ -870,8 +870,12 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
|
||||||
out_free_sdev:
|
out_free_sdev:
|
||||||
if (res == SCSI_SCAN_LUN_PRESENT) {
|
if (res == SCSI_SCAN_LUN_PRESENT) {
|
||||||
if (sdevp) {
|
if (sdevp) {
|
||||||
scsi_device_get(sdev);
|
if (scsi_device_get(sdev) == 0) {
|
||||||
*sdevp = sdev;
|
*sdevp = sdev;
|
||||||
|
} else {
|
||||||
|
__scsi_remove_device(sdev);
|
||||||
|
res = SCSI_SCAN_NO_RESPONSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (sdev->host->hostt->slave_destroy)
|
if (sdev->host->hostt->slave_destroy)
|
||||||
|
|
Loading…
Reference in New Issue