raid6test: fix stack overflow
Dan Williams [Thu, 17 Sep 2009 04:03:29 +0000 (21:03 -0700)]
Testing on x86_64 with NDISKS=255 yields:

   do_IRQ: modprobe near stack overflow (cur:ffff88007d19c000,sp:ffff88007d19c128)

...and eventually

   general protection fault: 0000 [#1]

Moving the scribble buffers off the stack allows the test to complete
successfully.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>

crypto/async_tx/raid6test.c

index 98c83ca..3ec27c7 100644 (file)
@@ -28,6 +28,7 @@
 #define NDISKS 16 /* Including P and Q */
 
 static struct page *dataptrs[NDISKS];
+static addr_conv_t addr_conv[NDISKS];
 static struct page *data[NDISKS+3];
 static struct page *spare;
 static struct page *recovi;
@@ -69,7 +70,6 @@ static char disk_type(int d, int disks)
 static void raid6_dual_recov(int disks, size_t bytes, int faila, int failb, struct page **ptrs)
 {
        struct async_submit_ctl submit;
-       addr_conv_t addr_conv[disks];
        struct completion cmp;
        struct dma_async_tx_descriptor *tx = NULL;
        enum sum_check_flags result = ~0;
@@ -156,7 +156,6 @@ static int test_disks(int i, int j, int disks)
 
 static int test(int disks, int *tests)
 {
-       addr_conv_t addr_conv[disks];
        struct dma_async_tx_descriptor *tx;
        struct async_submit_ctl submit;
        struct completion cmp;