Skip to contentSkip to conversation

scsi: dpt_i2o: double free on error path

PATCH Applied Dan Carpenter 3 participants 3 messages Nov 30, 2016 – Dec 1, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 scsi: dpt_i2o: double free on error path

We recently introduced a kfree() in the caller for this function. That's where, logically, you would think the kfree() should be. Unfortunately the code was just ugly and not buggy so the static checker warning was a false postive and introduced a double free.

I've removed the old kfree() and left the new one.

Fixes 021e2927586d ("scsi: dpt_i2o: Add a missing call to kfree")
drivers/scsi/dpt_i2o.c +0 -1
index f88b3d2..27c0dce 100644
@@ -651,7 +651,6 @@ static u32 adpt_ioctl_to_context(adpt_hba * pHba, void *reply)
 	}
 	spin_unlock_irqrestore(pHba->host->host_lock, flags);
 	if (i >= nr) {
-		kfree (reply);
 		printk(KERN_WARNING"%s: Too many outstanding "
 				"ioctl commands\n", pHba->name);
 		return (u32)-1;
#1 lore raw
Quoted 5 lines · Dan Carpenter

We recently introduced a kfree() in the caller for this function. That's where, logically, you would think the kfree() should be. Unfortunately the code was just ugly and not buggy so the static checker warning was a false postive and introduced a double free.

oh, yes! Sorry I missed that.

Quentin

#2 lore raw
In reply to Dan Carpenter
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Dan" = Dan Carpenter <[email protected]> writes:

Dan> We recently introduced a kfree() in the caller for this function. Dan> That's where, logically, you would think the kfree() should be. Dan> Unfortunately the code was just ugly and not buggy so the static Dan> checker warning was a false postive and introduced a double free.

Dan> I've removed the old kfree() and left the new one.

Applied to 4.10/scsi-queue.

Signature · 1 line
Martin K. Petersen	Oracle Linux Engineering