]> www.infradead.org Git - users/jedix/linux-maple.git/commit
refcount: Report UAF for refcount_sub_and_test(0) when counter==0
authorPetr Pavlu <petr.pavlu@suse.com>
Wed, 17 Jul 2024 13:00:23 +0000 (15:00 +0200)
committerKees Cook <kees@kernel.org>
Mon, 5 Aug 2024 21:34:23 +0000 (14:34 -0700)
commitf91f7ac900e7342e0fd66093dfbf7cb8cb585a99
tree126191748ddf797d75e0ad3582f64b991295f29a
parentde9c2c66ad8e787abec7c9d7eff4f8c3cdd28aed
refcount: Report UAF for refcount_sub_and_test(0) when counter==0

When a reference counter is at zero and refcount_sub_and_test() is invoked
to subtract zero, the function accepts this request without any warning and
returns true. This behavior does not seem ideal because the counter being
already at zero indicates a use-after-free. Furthermore, returning true by
refcount_sub_and_test() in this case potentially results in a double-free
done by its caller.

Modify the underlying function __refcount_sub_and_test() to warn about this
case as a use-after-free and have it return false to avoid the potential
double-free.

Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240717130023.5675-1-petr.pavlu@suse.com
Signed-off-by: Kees Cook <kees@kernel.org>
drivers/misc/lkdtm/refcount.c
include/linux/refcount.h