ARM: 9150/1: Fix PID_IN_CONTEXTIDR regression when THREAD_INFO_IN_TASK=y
authorArd Biesheuvel <ardb@kernel.org>
Fri, 29 Oct 2021 16:45:32 +0000 (17:45 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Sat, 30 Oct 2021 10:24:36 +0000 (11:24 +0100)
commitfa191b711c32ba107cf8d3474cd860407b7e997a
tree9c3e7f819f8f78e7acaf00cc34c77d147b754a76
parent13a695aa50de151ff9aca868c3915687771c80a5
ARM: 9150/1: Fix PID_IN_CONTEXTIDR regression when THREAD_INFO_IN_TASK=y

The code that implements the rarely used PID_IN_CONTEXTIDR feature
dereferences the 'task' field of struct thread_info directly, and this
is no longer possible when THREAD_INFO_IN_TASK=y, as the 'task' field is
omitted from the struct definition in that case. Instead, we should just
cast the thread_info pointer to a task_struct pointer, given that the
former is now the first member of the latter.

So use a helper that abstracts this, and provide implementations for
both cases.

Reported by: Arnd Bergmann <arnd@arndb.de>

Fixes: 18ed1c01a7dd ("ARM: smp: Enable THREAD_INFO_IN_TASK")
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
arch/arm/include/asm/thread_info.h
arch/arm/mm/context.c