mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
Merge patch "Fix a segmentation fault also add raid6test for RISC-V support"
This is a fix in the middle of a feature set, so I'm going to take the fix onto fixes on its own. * b4-shazam-merge: raid6: riscv: Fix NULL pointer dereference issue Link: https://lore.kernel.org/r/20250610101234.1100660-1-zhangchunyan@iscas.ac.cn Signed-off-by: Palmer Dabbelt <palmer@dabbelt.com>
This commit is contained in:
commit
dbe0038b65
|
|
@ -26,9 +26,9 @@ static int rvv_has_vector(void)
|
|||
static void raid6_rvv1_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs)
|
||||
{
|
||||
u8 **dptr = (u8 **)ptrs;
|
||||
unsigned long d;
|
||||
int z, z0;
|
||||
u8 *p, *q;
|
||||
unsigned long vl, d;
|
||||
int z, z0;
|
||||
|
||||
z0 = disks - 3; /* Highest data disk */
|
||||
p = dptr[z0 + 1]; /* XOR parity */
|
||||
|
|
@ -36,8 +36,9 @@ static void raid6_rvv1_gen_syndrome_real(int disks, unsigned long bytes, void **
|
|||
|
||||
asm volatile (".option push\n"
|
||||
".option arch,+v\n"
|
||||
"vsetvli t0, x0, e8, m1, ta, ma\n"
|
||||
"vsetvli %0, x0, e8, m1, ta, ma\n"
|
||||
".option pop\n"
|
||||
: "=&r" (vl)
|
||||
);
|
||||
|
||||
/* v0:wp0, v1:wq0, v2:wd0/w20, v3:w10 */
|
||||
|
|
@ -99,7 +100,7 @@ static void raid6_rvv1_xor_syndrome_real(int disks, int start, int stop,
|
|||
{
|
||||
u8 **dptr = (u8 **)ptrs;
|
||||
u8 *p, *q;
|
||||
unsigned long d;
|
||||
unsigned long vl, d;
|
||||
int z, z0;
|
||||
|
||||
z0 = stop; /* P/Q right side optimization */
|
||||
|
|
@ -108,8 +109,9 @@ static void raid6_rvv1_xor_syndrome_real(int disks, int start, int stop,
|
|||
|
||||
asm volatile (".option push\n"
|
||||
".option arch,+v\n"
|
||||
"vsetvli t0, x0, e8, m1, ta, ma\n"
|
||||
"vsetvli %0, x0, e8, m1, ta, ma\n"
|
||||
".option pop\n"
|
||||
: "=&r" (vl)
|
||||
);
|
||||
|
||||
/* v0:wp0, v1:wq0, v2:wd0/w20, v3:w10 */
|
||||
|
|
@ -195,9 +197,9 @@ static void raid6_rvv1_xor_syndrome_real(int disks, int start, int stop,
|
|||
static void raid6_rvv2_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs)
|
||||
{
|
||||
u8 **dptr = (u8 **)ptrs;
|
||||
unsigned long d;
|
||||
int z, z0;
|
||||
u8 *p, *q;
|
||||
unsigned long vl, d;
|
||||
int z, z0;
|
||||
|
||||
z0 = disks - 3; /* Highest data disk */
|
||||
p = dptr[z0 + 1]; /* XOR parity */
|
||||
|
|
@ -205,8 +207,9 @@ static void raid6_rvv2_gen_syndrome_real(int disks, unsigned long bytes, void **
|
|||
|
||||
asm volatile (".option push\n"
|
||||
".option arch,+v\n"
|
||||
"vsetvli t0, x0, e8, m1, ta, ma\n"
|
||||
"vsetvli %0, x0, e8, m1, ta, ma\n"
|
||||
".option pop\n"
|
||||
: "=&r" (vl)
|
||||
);
|
||||
|
||||
/*
|
||||
|
|
@ -287,7 +290,7 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,
|
|||
{
|
||||
u8 **dptr = (u8 **)ptrs;
|
||||
u8 *p, *q;
|
||||
unsigned long d;
|
||||
unsigned long vl, d;
|
||||
int z, z0;
|
||||
|
||||
z0 = stop; /* P/Q right side optimization */
|
||||
|
|
@ -296,8 +299,9 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,
|
|||
|
||||
asm volatile (".option push\n"
|
||||
".option arch,+v\n"
|
||||
"vsetvli t0, x0, e8, m1, ta, ma\n"
|
||||
"vsetvli %0, x0, e8, m1, ta, ma\n"
|
||||
".option pop\n"
|
||||
: "=&r" (vl)
|
||||
);
|
||||
|
||||
/*
|
||||
|
|
@ -413,9 +417,9 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,
|
|||
static void raid6_rvv4_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs)
|
||||
{
|
||||
u8 **dptr = (u8 **)ptrs;
|
||||
unsigned long d;
|
||||
int z, z0;
|
||||
u8 *p, *q;
|
||||
unsigned long vl, d;
|
||||
int z, z0;
|
||||
|
||||
z0 = disks - 3; /* Highest data disk */
|
||||
p = dptr[z0 + 1]; /* XOR parity */
|
||||
|
|
@ -423,8 +427,9 @@ static void raid6_rvv4_gen_syndrome_real(int disks, unsigned long bytes, void **
|
|||
|
||||
asm volatile (".option push\n"
|
||||
".option arch,+v\n"
|
||||
"vsetvli t0, x0, e8, m1, ta, ma\n"
|
||||
"vsetvli %0, x0, e8, m1, ta, ma\n"
|
||||
".option pop\n"
|
||||
: "=&r" (vl)
|
||||
);
|
||||
|
||||
/*
|
||||
|
|
@ -539,7 +544,7 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,
|
|||
{
|
||||
u8 **dptr = (u8 **)ptrs;
|
||||
u8 *p, *q;
|
||||
unsigned long d;
|
||||
unsigned long vl, d;
|
||||
int z, z0;
|
||||
|
||||
z0 = stop; /* P/Q right side optimization */
|
||||
|
|
@ -548,8 +553,9 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,
|
|||
|
||||
asm volatile (".option push\n"
|
||||
".option arch,+v\n"
|
||||
"vsetvli t0, x0, e8, m1, ta, ma\n"
|
||||
"vsetvli %0, x0, e8, m1, ta, ma\n"
|
||||
".option pop\n"
|
||||
: "=&r" (vl)
|
||||
);
|
||||
|
||||
/*
|
||||
|
|
@ -721,9 +727,9 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,
|
|||
static void raid6_rvv8_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs)
|
||||
{
|
||||
u8 **dptr = (u8 **)ptrs;
|
||||
unsigned long d;
|
||||
int z, z0;
|
||||
u8 *p, *q;
|
||||
unsigned long vl, d;
|
||||
int z, z0;
|
||||
|
||||
z0 = disks - 3; /* Highest data disk */
|
||||
p = dptr[z0 + 1]; /* XOR parity */
|
||||
|
|
@ -731,8 +737,9 @@ static void raid6_rvv8_gen_syndrome_real(int disks, unsigned long bytes, void **
|
|||
|
||||
asm volatile (".option push\n"
|
||||
".option arch,+v\n"
|
||||
"vsetvli t0, x0, e8, m1, ta, ma\n"
|
||||
"vsetvli %0, x0, e8, m1, ta, ma\n"
|
||||
".option pop\n"
|
||||
: "=&r" (vl)
|
||||
);
|
||||
|
||||
/*
|
||||
|
|
@ -915,7 +922,7 @@ static void raid6_rvv8_xor_syndrome_real(int disks, int start, int stop,
|
|||
{
|
||||
u8 **dptr = (u8 **)ptrs;
|
||||
u8 *p, *q;
|
||||
unsigned long d;
|
||||
unsigned long vl, d;
|
||||
int z, z0;
|
||||
|
||||
z0 = stop; /* P/Q right side optimization */
|
||||
|
|
@ -924,8 +931,9 @@ static void raid6_rvv8_xor_syndrome_real(int disks, int start, int stop,
|
|||
|
||||
asm volatile (".option push\n"
|
||||
".option arch,+v\n"
|
||||
"vsetvli t0, x0, e8, m1, ta, ma\n"
|
||||
"vsetvli %0, x0, e8, m1, ta, ma\n"
|
||||
".option pop\n"
|
||||
: "=&r" (vl)
|
||||
);
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user