]> git.hungrycats.org Git - linux/commitdiff
Mark compaq Fibre Channel driver broken.
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 9 Jun 2004 01:24:19 +0000 (18:24 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 9 Jun 2004 01:24:19 +0000 (18:24 -0700)
It puts two 2kB temp areas on the stack, which is
guaranteed to overflow a 4kB stack if that path
is ever taken.

Both marked in the source, and both should be easy
to fix but need testing.

Found by Jörn Engel.

drivers/scsi/Kconfig
drivers/scsi/cpqfcTScontrol.c

index 0cd207e9e68f68556c8d96efec5923ed4ee1b5a8..ebbada35453aae340605c721cd780c25c349340c 100644 (file)
@@ -494,9 +494,15 @@ config SCSI_OMIT_FLASHPOINT
          substantial, so users of MultiMaster Host Adapters may wish to omit
          it.
 
+#
+# This is marked broken because it uses over 4kB of stack in
+# just two routines:
+#     2076  CpqTsProcessIMQEntry
+#     2052  PeekIMQEntry
+#
 config SCSI_CPQFCTS
        tristate "Compaq Fibre Channel 64-bit/66Mhz HBA support"
-       depends on PCI && SCSI
+       depends on PCI && SCSI && BROKEN
        help
          Say Y here to compile in support for the Compaq StorageWorks Fibre
          Channel 64-bit/66Mhz Host Bus Adapter.
index 2c195eee664a9ebb8c8452b0c3e252eff1eb562c..9855a858711739a3cc9f5845cecfb248f2cd8ad1 100644 (file)
@@ -607,6 +607,7 @@ static int PeekIMQEntry( PTACHYON fcChip, ULONG type)
         if( (fcChip->IMQ->QEntry[CI].type & 0x1FF) == 0x104 )
         { 
           TachFCHDR_GCMND* fchs;
+#error This is too much stack
           ULONG ulFibreFrame[2048/4];  // max DWORDS in incoming FC Frame
          USHORT SFQpi = (USHORT)(fcChip->IMQ->QEntry[CI].word[0] & 0x0fffL);
 
@@ -718,6 +719,7 @@ int CpqTsProcessIMQEntry(void *host)
   ULONG x_ID;
   ULONG ulBuff, dwStatus;
   TachFCHDR_GCMND* fchs;
+#error This is too much stack
   ULONG ulFibreFrame[2048/4];  // max number of DWORDS in incoming Fibre Frame
   UCHAR ucInboundMessageType;  // Inbound CM, dword 3 "type" field