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

From: Will Deacon
Date: Wed Oct 30 2019 - 10:30:45 EST


Hi all,

This is version four 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
v3: https://lkml.kernel.org/r/20191007154703.5574-1-will@xxxxxxxxxx

Changes since v3 include:

- Add description of racy behaviour include/linux/refcount.h
- Fix saturation behaviour in refcount_sub_and_test()
- Added Acks and Tested-bys

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 | 269 ++++++++++++++++++++++++-----
kernel/panic.c | 11 --
lib/refcount.c | 255 +++------------------------
14 files changed, 257 insertions(+), 503 deletions(-)
delete mode 100644 arch/x86/include/asm/refcount.h

--
2.24.0.rc0.303.g954a862665-goog