Commit 64985c3a authored by Sven Schnelle's avatar Sven Schnelle Committed by Vasily Gorbik
Browse files

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: default avatarSven Schnelle <svens@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent b0d31159
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
}