linux/arch
Thomas Weißschuh bd90dbd196 MIPS: Don't crash in stack_top() for tasks without ABI or vDSO
[ Upstream commit e9f4a6b342 ]

Not all tasks have an ABI associated or vDSO mapped,
for example kthreads never do.
If such a task ever ends up calling stack_top(), it will derefence the
NULL ABI pointer and crash.

This can for example happen when using kunit:

    mips_stack_top+0x28/0xc0
    arch_pick_mmap_layout+0x190/0x220
    kunit_vm_mmap_init+0xf8/0x138
    __kunit_add_resource+0x40/0xa8
    kunit_vm_mmap+0x88/0xd8
    usercopy_test_init+0xb8/0x240
    kunit_try_run_case+0x5c/0x1a8
    kunit_generic_run_threadfn_adapter+0x28/0x50
    kthread+0x118/0x240
    ret_from_kernel_thread+0x14/0x1c

Only dereference the ABI point if it is set.

The GIC page is also included as it is specific to the vDSO.
Also move the randomization adjustment into the same conditional.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Reviewed-by: David Gow <davidgow@google.com>
Reviewed-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-08-28 16:24:23 +02:00
..
alpha sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
arc sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
arm ARM: tegra: Use I/O memcpy to write to IRAM 2025-08-28 16:24:18 +02:00
arm64 arm64: Mark kernel as tainted on SAE and SError panic 2025-08-28 16:24:20 +02:00
csky sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
h8300 sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
hexagon sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
ia64 sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
m68k m68k: Don't unregister boot console needlessly 2025-08-28 16:24:08 +02:00
microblaze sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
mips MIPS: Don't crash in stack_top() for tasks without ABI or vDSO 2025-08-28 16:24:23 +02:00
nds32 sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
nios2 sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
openrisc sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
parisc sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
powerpc (powerpc/512) Fix possible dma_unmap_single() on uninitialized pointer 2025-08-28 16:24:21 +02:00
riscv sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
s390 s390/stp: Remove udelay from stp_sync_clock() 2025-08-28 16:24:20 +02:00
sh sh: Do not use hyphen in exported variable name 2025-08-28 16:24:11 +02:00
sparc sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
um um: rtc: Avoid shadowing err in uml_rtc_start() 2025-08-28 16:24:08 +02:00
x86 x86/bugs: Avoid warning when overriding return thunk 2025-08-28 16:24:19 +02:00
xtensa sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
.gitignore .gitignore: prefix local generated files with a slash 2021-05-02 00:43:35 +09:00
Kconfig cpu: Re-enable CPU mitigations by default for !X86 architectures 2024-05-02 16:24:48 +02:00