Skip to content

Commit

Permalink
lkdtm/stackleak: avoid spurious failure
Browse files Browse the repository at this point in the history
The lkdtm_STACKLEAK_ERASING() test scans for a contiguous block of
poison values between the low stack bound and the stack pointer, and
fails if it does not find a sufficiently large block.

This can happen legitimately if the scan the low stack bound, which
could occur if functions called prior to lkdtm_STACKLEAK_ERASING() used
a large amount of stack. If this were to occur, it means that the erased
portion of the stack is smaller than the size used by the scan, but does
not cause a functional problem

In practice this is unlikely to happen, but as this is legitimate and
would not result in a functional problem, the test should not fail in
this case.

Remove the spurious failure case.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Alexander Popov <alex.popov@linux.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20220427173128.2603085-9-mark.rutland@arm.com
  • Loading branch information
Mark Rutland authored and Kees Cook committed May 8, 2022
1 parent 77cf2b6 commit 4130a61
Showing 1 changed file with 0 additions and 7 deletions.
7 changes: 0 additions & 7 deletions drivers/misc/lkdtm/stackleak.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,6 @@ void lkdtm_STACKLEAK_ERASING(void)
found = 0;
}

if (found <= check_depth) {
pr_err("FAIL: the erased part is not found (checked %lu bytes)\n",
i * sizeof(unsigned long));
test_failed = true;
goto end;
}

pr_info("the erased part begins after %lu not poisoned bytes\n",
(i - found) * sizeof(unsigned long));

Expand Down

0 comments on commit 4130a61

Please sign in to comment.