test: check copy_to/from_user boundary validation

To help avoid an architecture failing to correctly check kernel/user
boundaries when handling copy_to_user, copy_from_user, put_user, or
get_user, perform some simple tests and fail to load if any of them
behave unexpectedly.

Specifically, this is to make sure there is a way to notice if things
like what was fixed in commit 8404663f81 ("ARM: 7527/1: uaccess:
explicitly check __user pointer when !CPU_USE_DOMAINS") ever regresses
again, for any architecture.

Additionally, adds new "user" selftest target, which loads this module.

Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Joe Perches <joe@perches.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Kees Cook
2014-01-23 15:54:38 -08:00
committed by Linus Torvalds
parent 93e9ef83f4
commit 3e2a4c183a
5 changed files with 138 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ TARGETS += ptrace
TARGETS += timers
TARGETS += vm
TARGETS += powerpc
TARGETS += user
all:
for TARGET in $(TARGETS); do \

View File

@@ -0,0 +1,13 @@
# Makefile for user memory selftests
# No binaries, but make sure arg-less "make" doesn't trigger "run_tests"
all:
run_tests: all
@if /sbin/modprobe test_user_copy ; then \
rmmod test_user_copy; \
echo "user_copy: ok"; \
else \
echo "user_copy: [FAIL]"; \
exit 1; \
fi