[PATCH v2 00/11] test_user_copy improvements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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)

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

--
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



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux