2004-09-01 17:24:15

by Dave Jones

[permalink] [raw]
Subject: [PATCH] Clean up failure path in DAC960

1. If the ScatterGatherPool allocation fails, its pointless
trying to allocate a RequestSensePool.
2. Free up the ScatterGatherPool if the RequestSensePool allocation fails.

Spotted with the source checker from Coverity.com.

Signed-off-by: Dave Jones <[email protected]>


diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/DAC960.c linux-2.6/drivers/block/DAC960.c
--- bk-linus/drivers/block/DAC960.c 2004-06-04 12:08:32.000000000 +0100
+++ linux-2.6/drivers/block/DAC960.c 2004-06-07 11:07:03.000000000 +0100
@@ -288,12 +288,17 @@ static boolean DAC960_CreateAuxiliaryStr
Controller->PCIDevice,
DAC960_V2_ScatterGatherLimit * sizeof(DAC960_V2_ScatterGatherSegment_T),
sizeof(DAC960_V2_ScatterGatherSegment_T), 0);
+ if (ScatterGatherPool == NULL)
+ return DAC960_Failure(Controller,
+ "AUXILIARY STRUCTURE CREATION (SG)");
RequestSensePool = pci_pool_create("DAC960_V2_RequestSense",
Controller->PCIDevice, sizeof(DAC960_SCSI_RequestSense_T),
sizeof(int), 0);
- if (ScatterGatherPool == NULL || RequestSensePool == NULL)
+ if (RequestSensePool == NULL) {
+ pci_pool_destroy(ScatterGatherPool);
return DAC960_Failure(Controller,
"AUXILIARY STRUCTURE CREATION (SG)");
+ }
Controller->ScatterGatherPool = ScatterGatherPool;
Controller->V2.RequestSensePool = RequestSensePool;
}