mbox series

[RFC,0/6] Simplify setting thread flags to a particular value

Message ID 1524135528-28561-1-git-send-email-Dave.Martin@arm.com
Headers show
Series Simplify setting thread flags to a particular value | expand

Message

Dave Martin April 19, 2018, 10:58 a.m. UTC
There are a number of bits of code sprinkled around the kernel to
set a thread flag if a certain condition is true, and clear it
otherwise.

To help make those call sites terser and less cumbersome, this
patch adds a new family of thread flag manipulators

	update*_thread_flag([...,] flag, cond)

See patch 1 for details.

Reviewers please pay close attention to accidental conversion of
set_tsk_thread_flag() to set_thread_flag() for example, and accidental
inversion of conditions.  I'm pretty sure neither happens, but
build-testing can't pick these up.

Build-tested on x86 and the explicitly patched architectures (defconfig
and multi_v7_defconfig for arm, defconfig for arm64, mips, powerpc,
sparc).

Boot-tested on arm64, with some context-switch stress tests that depend
on correct maintenance of TIF_FOREIGN_FPSTATE.


Background rationale:

I've found myself coding this idiom a few times now and would like to
stop duplicating it.  Using an ungainly lash-up of sed and grep I tried
to find other users of the same idiom without too many false positives,
and there while there aren't a huge number it seemed enough to be worth
having a go at a simple cleanup.

The core changes are in the first patch; other changes are split
per-arch.


Dave Martin (6):
  thread_info: Add update_thread_flag() helpers
  ARM: Use update_thread_flag()
  arm64: Use update{,_tsk}_thread_flag()
  MIPS: Use update{,_tsk}_thread_flag()
  powerpc: Use update_thread_flag()
  sparc: Use update_thread_flag()

 arch/arm/kernel/elf.c           |  9 +++------
 arch/arm64/kernel/fpsimd.c      | 19 +++++++------------
 arch/mips/kernel/elf.c          | 10 ++--------
 arch/mips/kernel/process.c      | 15 ++++++---------
 arch/mips/kernel/ptrace.c       |  5 +----
 arch/mips/kernel/syscall.c      | 10 ++--------
 arch/powerpc/include/asm/elf.h  | 10 ++--------
 arch/sparc/include/asm/elf_64.h |  5 +----
 include/linux/sched.h           |  6 ++++++
 include/linux/thread_info.h     | 11 +++++++++++
 include/trace/syscall.h         |  6 ++----
 kernel/ptrace.c                 | 13 +++++--------
 12 files changed, 48 insertions(+), 71 deletions(-)

-- 
2.1.4