s390: use WRITE_ONCE when re-allocating async stack
The code does: S390_lowcore.async_stack = new + STACK_INIT_OFFSET; But the compiler is free to first assign one value and add the other value later. If a IRQ would be coming in between these two operations, it would run with an invalid stack. Prevent this by using WRITE_ONCE. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
b0d31159a4
commit
64985c3a22
|
@ -346,7 +346,7 @@ static int __init async_stack_realloc(void)
|
|||
new = stack_alloc();
|
||||
if (!new)
|
||||
panic("Couldn't allocate async stack");
|
||||
S390_lowcore.async_stack = new + STACK_INIT_OFFSET;
|
||||
WRITE_ONCE(S390_lowcore.async_stack, new + STACK_INIT_OFFSET);
|
||||
free_pages(old, THREAD_SIZE_ORDER);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue