]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
raid6/test/test.c: bug fix: Specify aligned(alignment) attributes to the char arrays
authorGayatri Kammela <gayatri.kammela@intel.com>
Mon, 26 Sep 2016 21:37:38 +0000 (14:37 -0700)
committerShaohua Li <shli@fb.com>
Mon, 26 Sep 2016 23:18:21 +0000 (16:18 -0700)
Specifying the aligned attributes to the char data[NDISKS][PAGE_SIZE],
char recovi[PAGE_SIZE] and char recovi[PAGE_SIZE] arrays, so that all
malloc memory is page boundary aligned.

Without these alignment attributes, the test causes a segfault in
userspace when the NDISKS are changed to 4 from 16.

The RAID stripes will be page aligned anyway, so we want to test what
the kernel actually will execute.

Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Yu-cheng Yu <yu-cheng.yu@intel.com>
Signed-off-by: Gayatri Kammela <gayatri.kammela@intel.com>
Reviewed-by: H. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: Shaohua Li <shli@fb.com>
lib/raid6/test/test.c

index 3bebbabdb51004bb7d66d8eed659f50afca29f5c..b07f4d8e6b033f8030ea715d5f78e16db37859f2 100644 (file)
 
 #define NDISKS         16      /* Including P and Q */
 
-const char raid6_empty_zero_page[PAGE_SIZE] __attribute__((aligned(256)));
+const char raid6_empty_zero_page[PAGE_SIZE] __attribute__((aligned(PAGE_SIZE)));
 struct raid6_calls raid6_call;
 
 char *dataptrs[NDISKS];
-char data[NDISKS][PAGE_SIZE];
-char recovi[PAGE_SIZE], recovj[PAGE_SIZE];
+char data[NDISKS][PAGE_SIZE] __attribute__((aligned(PAGE_SIZE)));
+char recovi[PAGE_SIZE] __attribute__((aligned(PAGE_SIZE)));
+char recovj[PAGE_SIZE] __attribute__((aligned(PAGE_SIZE)));
 
 static void makedata(int start, int stop)
 {