[PATCH v3 00/10] Rework REFCOUNT_FULL using atomic_fetch_* operations

From: Will Deacon
Date: Mon Oct 07 2019 - 11:47:11 EST


Hi all,

This is version three of the patches I previously posted here:

v1: https://lkml.kernel.org/r/20190802101000.12958-1-will@xxxxxxxxxx
v2: https://lkml.kernel.org/r/20190827163204.29903-1-will@xxxxxxxxxx

Changes since v2 include:

- Remove the x86 assembly version and enable this code unconditionally
- Move saturation warnings out-of-line to reduce image bloat

Cheers,

Will

Cc: Kees Cook <keescook@xxxxxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: Elena Reshetova <elena.reshetova@xxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>
Cc: Hanjun Guo <guohanjun@xxxxxxxxxx>
Cc: Jan Glauber <jglauber@xxxxxxxxxxx>

--->8

Will Deacon (10):
lib/refcount: Define constants for saturation and max refcount values
lib/refcount: Ensure integer operands are treated as signed
lib/refcount: Remove unused refcount_*_checked() variants
lib/refcount: Move bulk of REFCOUNT_FULL implementation into header
lib/refcount: Improve performance of generic REFCOUNT_FULL code
lib/refcount: Move saturation warnings out of line
lib/refcount: Consolidate REFCOUNT_{MAX,SATURATED} definitions
refcount: Consolidate implementations of refcount_t
lib/refcount: Remove unused 'refcount_error_report()' function
drivers/lkdtm: Remove references to CONFIG_REFCOUNT_FULL

arch/Kconfig | 21 ---
arch/arm/Kconfig | 1 -
arch/arm64/Kconfig | 1 -
arch/s390/configs/debug_defconfig | 1 -
arch/x86/Kconfig | 1 -
arch/x86/include/asm/asm.h | 6 -
arch/x86/include/asm/refcount.h | 126 --------------
arch/x86/mm/extable.c | 49 ------
drivers/gpu/drm/i915/Kconfig.debug | 1 -
drivers/misc/lkdtm/refcount.c | 11 +-
include/linux/kernel.h | 7 -
include/linux/refcount.h | 231 +++++++++++++++++++++-----
kernel/panic.c | 11 --
lib/refcount.c | 255 +++--------------------------
14 files changed, 219 insertions(+), 503 deletions(-)
delete mode 100644 arch/x86/include/asm/refcount.h

--
2.23.0.581.g78d2f28ef7-goog