Patch from Dave Olien This was found by the Standford Checker. The LogicalDeviceNumber bad range test was changed from > to >= I also replaced a couple of panic() calls with error messages, since panic-ing seemed a little extreme. drivers/block/DAC960.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) diff -puN drivers/block/DAC960.c~dac960-range-fix drivers/block/DAC960.c --- 25/drivers/block/DAC960.c~dac960-range-fix Thu Feb 6 14:44:53 2003 +++ 25-akpm/drivers/block/DAC960.c Thu Feb 6 14:44:53 2003 @@ -1731,12 +1731,17 @@ static boolean DAC960_V2_ReadControllerC if (!DAC960_V2_NewLogicalDeviceInfo(Controller, LogicalDeviceNumber)) break; LogicalDeviceNumber = NewLogicalDeviceInfo->LogicalDeviceNumber; - if (LogicalDeviceNumber > DAC960_MaxLogicalDrives) - panic("DAC960: Logical Drive Number %d not supported\n", - LogicalDeviceNumber); - if (NewLogicalDeviceInfo->DeviceBlockSizeInBytes != DAC960_BlockSize) - panic("DAC960: Logical Drive Block Size %d not supported\n", - NewLogicalDeviceInfo->DeviceBlockSizeInBytes); + if (LogicalDeviceNumber >= DAC960_MaxLogicalDrives) { + DAC960_Error("DAC960: Logical Drive Number %d not supported\n", + Controller, LogicalDeviceNumber); + break; + } + if (NewLogicalDeviceInfo->DeviceBlockSizeInBytes != DAC960_BlockSize) { + DAC960_Error("DAC960: Logical Drive Block Size %d not supported\n", + Controller, NewLogicalDeviceInfo->DeviceBlockSizeInBytes); + LogicalDeviceNumber++; + continue; + } PhysicalDevice.Controller = 0; PhysicalDevice.Channel = NewLogicalDeviceInfo->Channel; PhysicalDevice.TargetID = NewLogicalDeviceInfo->TargetID; _