Re: [PATCH v4 00/10] thread_info: use helpers to snapshot thread flags

From: Paul E. McKenney
Date: Tue Aug 03 2021 - 12:01:42 EST


On Tue, Aug 03, 2021 at 10:54:18AM +0100, Mark Rutland wrote:
> As thread_info::flags scan be manipulated by remote threads, it is
> necessary to use atomics or READ_ONCE() to ensure that code manipulates
> a consistent snapshot, but we open-code plain accesses to
> thread_info::flags across the kernel tree.
>
> Generally we get away with this, but tools like KCSAN legitimately warn
> that there is a data-race, and this is potentially fragile with compiler
> optimizations, LTO, etc.
>
> These patches introduce new helpers to snahpshot the thread flags, with
> the intent being that these should replace all plain accesses.

For the series:

Acked-by: Paul E. McKenney <paulmck@xxxxxxxxxx>

> Since v1 [1]:
> * Drop RFC
> * Make read_ti_thread_flags() __always_inline
> * Clarify commit messages
> * Fix typo in arm64 patch
> * Accumulate Reviewed-by / Acked-by tags
> * Drop powerpc patch to avoid potential conflicts (per [2])
>
> Since v2 [3]:
> * Rebase to v5.14-rc1
> * Reinstate powerpc patch
>
> Since v3 [4]:
> * Rebase to v5.14-rc4
>
> [1] https://lore.kernel.org/r/20210609122001.18277-1-mark.rutland@xxxxxxx
> [2] https://lore.kernel.org/r/87k0mvtgeb.fsf@xxxxxxxxxxxxxxxxxx
> [3] https://lore.kernel.org/r/20210621090602.16883-1-mark.rutland@xxxxxxx
> [4] https://lore.kernel.org/r/20210713113842.2106-1-mark.rutland@xxxxxxx
>
> Thanks,
> Mark.
>
> Mark Rutland (10):
> thread_info: add helpers to snapshot thread flags
> entry: snapshot thread flags
> sched: snapshot thread flags
> alpha: snapshot thread flags
> arm: snapshot thread flags
> arm64: snapshot thread flags
> microblaze: snapshot thread flags
> openrisc: snapshot thread flags
> powerpc: snapshot thread flags
> x86: snapshot thread flags
>
> arch/alpha/kernel/signal.c | 2 +-
> arch/arm/kernel/signal.c | 2 +-
> arch/arm/mm/alignment.c | 2 +-
> arch/arm64/kernel/ptrace.c | 4 ++--
> arch/arm64/kernel/signal.c | 2 +-
> arch/arm64/kernel/syscall.c | 4 ++--
> arch/microblaze/kernel/signal.c | 2 +-
> arch/openrisc/kernel/signal.c | 2 +-
> arch/powerpc/kernel/interrupt.c | 13 ++++++-------
> arch/powerpc/kernel/ptrace/ptrace.c | 3 +--
> arch/x86/kernel/process.c | 8 ++++----
> arch/x86/kernel/process.h | 6 +++---
> arch/x86/mm/tlb.c | 2 +-
> include/linux/entry-kvm.h | 2 +-
> include/linux/thread_info.h | 14 ++++++++++++++
> kernel/entry/common.c | 4 ++--
> kernel/entry/kvm.c | 4 ++--
> kernel/sched/core.c | 2 +-
> 18 files changed, 45 insertions(+), 33 deletions(-)
>
> --
> 2.11.0
>