mbox series

[0/2] riscv: Improve KASAN coverage to fix unit tests

Message ID 20240801033725.28816-1-samuel.holland@sifive.com (mailing list archive)
Headers show
Series riscv: Improve KASAN coverage to fix unit tests | expand

Message

Samuel Holland Aug. 1, 2024, 3:36 a.m. UTC
This series fixes two areas where uninstrumented assembly routines
caused gaps in KASAN coverage on RISC-V, which were caught by KUnit
tests. The KASAN KUnit test suite passes after applying this series.

This series fixes the following test failures:
  # kasan_strings: EXPECTATION FAILED at mm/kasan/kasan_test.c:1520
  KASAN failure expected in "kasan_int_result = strcmp(ptr, "2")", but none occurred
  # kasan_strings: EXPECTATION FAILED at mm/kasan/kasan_test.c:1524
  KASAN failure expected in "kasan_int_result = strlen(ptr)", but none occurred
  not ok 60 kasan_strings
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1531
  KASAN failure expected in "set_bit(nr, addr)", but none occurred
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1533
  KASAN failure expected in "clear_bit(nr, addr)", but none occurred
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1535
  KASAN failure expected in "clear_bit_unlock(nr, addr)", but none occurred
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1536
  KASAN failure expected in "__clear_bit_unlock(nr, addr)", but none occurred
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1537
  KASAN failure expected in "change_bit(nr, addr)", but none occurred
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1543
  KASAN failure expected in "test_and_set_bit(nr, addr)", but none occurred
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1545
  KASAN failure expected in "test_and_set_bit_lock(nr, addr)", but none occurred
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1546
  KASAN failure expected in "test_and_clear_bit(nr, addr)", but none occurred
  # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1548
  KASAN failure expected in "test_and_change_bit(nr, addr)", but none occurred
  not ok 61 kasan_bitops_generic


Samuel Holland (2):
  riscv: Omit optimized string routines when using KASAN
  riscv: Enable bitops instrumentation

 arch/riscv/include/asm/bitops.h | 43 ++++++++++++++++++---------------
 arch/riscv/include/asm/string.h |  2 ++
 arch/riscv/kernel/riscv_ksyms.c |  3 ---
 arch/riscv/lib/Makefile         |  2 ++
 arch/riscv/lib/strcmp.S         |  1 +
 arch/riscv/lib/strlen.S         |  1 +
 arch/riscv/lib/strncmp.S        |  1 +
 arch/riscv/purgatory/Makefile   |  2 ++
 8 files changed, 32 insertions(+), 23 deletions(-)

Comments

patchwork-bot+linux-riscv@kernel.org Sept. 20, 2024, 8:20 a.m. UTC | #1
Hello:

This series was applied to riscv/linux.git (for-next)
by Palmer Dabbelt <palmer@rivosinc.com>:

On Wed, 31 Jul 2024 20:36:58 -0700 you wrote:
> This series fixes two areas where uninstrumented assembly routines
> caused gaps in KASAN coverage on RISC-V, which were caught by KUnit
> tests. The KASAN KUnit test suite passes after applying this series.
> 
> This series fixes the following test failures:
>   # kasan_strings: EXPECTATION FAILED at mm/kasan/kasan_test.c:1520
>   KASAN failure expected in "kasan_int_result = strcmp(ptr, "2")", but none occurred
>   # kasan_strings: EXPECTATION FAILED at mm/kasan/kasan_test.c:1524
>   KASAN failure expected in "kasan_int_result = strlen(ptr)", but none occurred
>   not ok 60 kasan_strings
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1531
>   KASAN failure expected in "set_bit(nr, addr)", but none occurred
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1533
>   KASAN failure expected in "clear_bit(nr, addr)", but none occurred
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1535
>   KASAN failure expected in "clear_bit_unlock(nr, addr)", but none occurred
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1536
>   KASAN failure expected in "__clear_bit_unlock(nr, addr)", but none occurred
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1537
>   KASAN failure expected in "change_bit(nr, addr)", but none occurred
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1543
>   KASAN failure expected in "test_and_set_bit(nr, addr)", but none occurred
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1545
>   KASAN failure expected in "test_and_set_bit_lock(nr, addr)", but none occurred
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1546
>   KASAN failure expected in "test_and_clear_bit(nr, addr)", but none occurred
>   # kasan_bitops_generic: EXPECTATION FAILED at mm/kasan/kasan_test.c:1548
>   KASAN failure expected in "test_and_change_bit(nr, addr)", but none occurred
>   not ok 61 kasan_bitops_generic
> 
> [...]

Here is the summary with links:
  - [1/2] riscv: Omit optimized string routines when using KASAN
    https://git.kernel.org/riscv/c/58ff537109ac
  - [2/2] riscv: Enable bitops instrumentation
    https://git.kernel.org/riscv/c/77514915b72c

You are awesome, thank you!