lkdtm: Provide more complete coverage for REFCOUNT tests
authorKees Cook <keescook@chromium.org>
Mon, 24 Apr 2017 20:23:21 +0000 (13:23 -0700)
committerKees Cook <keescook@chromium.org>
Wed, 26 Jul 2017 21:38:03 +0000 (14:38 -0700)
commit95925c99b9043d52db626645e6ef5ee5f62c97e4
treec7aca11aba82dbf05d5b75e5655be29f0b92bc90
parent520eccdfe187591a51ea9ab4c1a024ae4d0f68d9
lkdtm: Provide more complete coverage for REFCOUNT tests

The existing REFCOUNT_* LKDTM tests were designed only for testing a narrow
portion of CONFIG_REFCOUNT_FULL. This moves the tests to their own file and
expands their testing to poke each boundary condition.

Since the protections (CONFIG_REFCOUNT_FULL and x86-fast) use different
saturation values and reach-zero behavior, those have to be build-time
set so the tests can actually validate things are happening at the
right places.

Notably, the x86-fast protection will fail REFCOUNT_INC_ZERO and
REFCOUNT_ADD_ZERO since those conditions are not checked (only overflow
is critical to protecting refcount_t). CONFIG_REFCOUNT_FULL will warn for
each REFCOUNT_*_NEGATIVE test since it provides zero-pinning behaviors
(which allows it to pass REFCOUNT_INC_ZERO and REFCOUNT_ADD_ZERO).

Signed-off-by: Kees Cook <keescook@chromium.org>
drivers/misc/Makefile
drivers/misc/lkdtm.h
drivers/misc/lkdtm_bugs.c
drivers/misc/lkdtm_core.c
drivers/misc/lkdtm_refcount.c [new file with mode: 0644]