On Fri, Aug 7, 2015 at 8:21 AM, James Hogan <james.hogan@xxxxxxxxxx> wrote: > These patches extend the test_user_copy test module to handle lots more > cases of user accessors which architectures can override separately, and > in particular those which are important for checking the MIPS Enhanced > Virtual Addressing (EVA) implementations, which need to handle > overlapping user and kernel address spaces, with special instructions > for accessing user address space from kernel mode. > > - Checking that kernel pointers are accepted when user address limit is > set to KERNEL_DS, as done by the kernel when it internally invokes > system calls with kernel pointers. > - Checking of the unchecked accessors (which don't call access_ok()). > Some of the tests are special cased for EVA at the moment which has > stricter hardware guarantees for bad user accesses than other > configurations. > - Checking of other sets of user accessors, including the inatomic user > copies, clear_user, compatibility accessors (copy_in_user and > _unaligned), the user string accessors, and the user checksum > functions, all of which need special handling in arch code with EVA. > > Tested on MIPS with and without EVA, and on x86_64. > > Only build tested for arm, blackfin, metag, microblaze, openrisc, > parisc, powerpc, sh, sparc, tile, i386 & xtensa. > > All arches were audited for the appropriate exports, only score is known > to still be missing some. > > Changes in v2: > - Add arch exports (patches 1-4). > - Reorder patches slightly. > - Patch 9: Drop strlen_user test. Microblaze doesn't define it, and > nothing actually uses it. IMO it should be removed, and there's no > point testing it in the mean time. > - Patch 10: Conditionalise on CONFIG_COMPAT, otherwise it breaks build > on some 32-bit arches e.g. i386 (kbuild test robot). > - Patch 10: Add testing of _unaligned accessors, which are also > conditional upon CONFIG_COMPAT. > - Patch 11: Only test csum_partial_copy_from_user #ifndef > _HAVE_ARCH_COPY_AND_CSUM_FROM_USER, fixing powerpc64 build (Stephen > Rothwell) Thanks for the fixes! Acked-by: Kees Cook <keescook@xxxxxxxxxxxx> -Kees > > James Hogan (11): > microblaze: Export __strnlen_user to modules > nios2: Export strncpy_from_user / strnlen_user to modules > openrisc: Export __clear_user to modules > xtensa: Export __strnlen_user to modules > test_user_copy: Check legit kernel accesses > test_user_copy: Check unchecked accessors > test_user_copy: Check __copy_{to,from}_user_inatomic() > test_user_copy: Check __clear_user()/clear_user() > test_user_copy: Check user string accessors > test_user_copy: Check user compatibility accessors > test_user_copy: Check user checksum functions > > arch/microblaze/kernel/microblaze_ksyms.c | 1 + > arch/nios2/mm/uaccess.c | 2 + > arch/openrisc/kernel/or32_ksyms.c | 1 + > arch/xtensa/kernel/xtensa_ksyms.c | 1 + > lib/test_user_copy.c | 251 ++++++++++++++++++++++++++++++ > 5 files changed, 256 insertions(+) > > Cc: Kees Cook <keescook@xxxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Michal Simek <monstr@xxxxxxxxx> > Cc: Ley Foon Tan <lftan@xxxxxxxxxx> > Cc: Jonas Bonn <jonas@xxxxxxxxxxxx> > Cc: Chris Zankel <chris@xxxxxxxxxx> > Cc: Max Filippov <jcmvbkbc@xxxxxxxxx> > Cc: nios2-dev@xxxxxxxxxxxxxxxxxxxxxx > Cc: linux@xxxxxxxxxxxxxxxxxx > Cc: linux-xtensa@xxxxxxxxxxxxxxxx > -- > 2.3.6 > -- Kees Cook Chrome OS Security -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html