]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
s390: use WRITE_ONCE when re-allocating async stack
authorSven Schnelle <svens@linux.ibm.com>
Wed, 10 Feb 2021 12:39:19 +0000 (13:39 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Sat, 13 Feb 2021 16:17:53 +0000 (17:17 +0100)
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>
arch/s390/kernel/setup.c

index c7feda84edbb0221764bf7599bcb7be268cdf9a6..6b004940c4dc34de796af55695db423380fa57f1 100644 (file)
@@ -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;
 }