diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-09-17 00:03:29 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-17 00:03:29 -0400 |
commit | 1b6df6930994d5d027375b07ac9da63644eb5758 (patch) | |
tree | 1cf584491f4f1f5407a49ad531ec0b60205f6e38 /crypto | |
parent | 376ec37667b510453f5a62fcd95d762786e6a0a9 (diff) |
raid6test: fix stack overflow
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>
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/async_tx/raid6test.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/crypto/async_tx/raid6test.c b/crypto/async_tx/raid6test.c index 98c83ca96c83..3ec27c7e62ea 100644 --- a/crypto/async_tx/raid6test.c +++ b/crypto/async_tx/raid6test.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #define NDISKS 16 /* Including P and Q */ | 28 | #define NDISKS 16 /* Including P and Q */ |
29 | 29 | ||
30 | static struct page *dataptrs[NDISKS]; | 30 | static struct page *dataptrs[NDISKS]; |
31 | static addr_conv_t addr_conv[NDISKS]; | ||
31 | static struct page *data[NDISKS+3]; | 32 | static struct page *data[NDISKS+3]; |
32 | static struct page *spare; | 33 | static struct page *spare; |
33 | static struct page *recovi; | 34 | static struct page *recovi; |
@@ -69,7 +70,6 @@ static char disk_type(int d, int disks) | |||
69 | static void raid6_dual_recov(int disks, size_t bytes, int faila, int failb, struct page **ptrs) | 70 | static void raid6_dual_recov(int disks, size_t bytes, int faila, int failb, struct page **ptrs) |
70 | { | 71 | { |
71 | struct async_submit_ctl submit; | 72 | struct async_submit_ctl submit; |
72 | addr_conv_t addr_conv[disks]; | ||
73 | struct completion cmp; | 73 | struct completion cmp; |
74 | struct dma_async_tx_descriptor *tx = NULL; | 74 | struct dma_async_tx_descriptor *tx = NULL; |
75 | enum sum_check_flags result = ~0; | 75 | enum sum_check_flags result = ~0; |
@@ -156,7 +156,6 @@ static int test_disks(int i, int j, int disks) | |||
156 | 156 | ||
157 | static int test(int disks, int *tests) | 157 | static int test(int disks, int *tests) |
158 | { | 158 | { |
159 | addr_conv_t addr_conv[disks]; | ||
160 | struct dma_async_tx_descriptor *tx; | 159 | struct dma_async_tx_descriptor *tx; |
161 | struct async_submit_ctl submit; | 160 | struct async_submit_ctl submit; |
162 | struct completion cmp; | 161 | struct completion cmp; |