[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#280330: Kernel 2.6.8 - mod DAC960 crashes



reassign #280330 kernel-source-2.6.8
thanks

On Mon, Nov 08, 2004 at 07:57:54PM +0100, Gunnar von Boehn wrote:
> Package: kernel-image
> Version: 2.6.8-powerpc
> 
> Hello,
> 
> I run Kernel 2.6.8 on powerpc. (On a Pegasos to be precise. :-) )
> 
> I've tried out a SCSI Raid-controller.
> A Mylex AcceleRaid 150 (960 PRL)
> 
> Unfortunately when loading the driver DAC960 (version 2.5.47) Linux 
> freezes.
> When pressing [power] I can see a Kernel panic.
> 
> What is the best way to proceed ?

Hi thanks for the bug report.

There seems to be scant few changes to the DAC960 of late so I had
no luck finding a fix lying around for this. I did notice one minor
patch to the DAC960, but it seems unlikely that it would resolve
your problem because it just addresses a failure case when
memory allocation fails (I think). I attached it in any case.

Is there any chance that you could see if the problem is reproduced
on 2.6.9? I believe there are popwerpc packages on d.o.

-- 
Horms
# origin: davej (BitKeeper)
# cset: 1.1832.63.4 (2.6) key=4137928dGJs4GSBlEz2kyDRU_iLDtA
# inclusion: upstream
# descrition: [PATCH] Clean up failure path in DAC960
# revision date: Tue, 09 Nov 2004 15:03:49 +0900
#
# rset: ChangeSet|1.1832.63.3..1.1832.63.4
# rset: drivers/block/DAC960.c|1.72..1.73
#
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/09/02 14:37:17-07:00 davej@redhat.com 
#   [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 <davej@redhat.com>
#   Signed-off-by: Linus Torvalds <torvalds@osdl.org>
# 
# drivers/block/DAC960.c
#   2004/06/07 03:07:03-07:00 davej@redhat.com +6 -1
#   Clean up failure path in DAC960
# 
diff -Nru a/drivers/block/DAC960.c b/drivers/block/DAC960.c
--- a/drivers/block/DAC960.c	2004-11-09 15:03:49 +09:00
+++ b/drivers/block/DAC960.c	2004-11-09 15:03:49 +09:00
@@ -288,12 +288,17 @@
 		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;
     }

Reply to: