Skip to contentSkip to conversation

mpt2sas: Before removing sas_device search device in list for _scsih_sas_device_remove

PATCH New Kashyap, Desai 1 participant 1 message Apr 8, 2010 SCSI

lore
Share & tools
lore
#0 lore raw

PATCH 2/3 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.

---

drivers/scsi/mpt2sas/mpt2sas_scsih.c +8 -3
index 8f594b7..47b5381 100644
@@ -536,10 +536,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);
 }