Commit ac8bf0de authored by Kees Cook's avatar Kees Cook Committed by Jonathan Corbet

docs: lkdtm: Modernize and improve details

The details on using LKDTM were overly obscure. Modernize the details
and expand examples to better illustrate how to use the interfaces.
Additionally add missing SPDX header.
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20201015224559.2137489-1-keescook@chromium.orgSigned-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 27def953
=============== .. SPDX-License-Identifier: GPL-2.0
Provoke crashes
===============
The lkdtm module provides an interface to crash or injure the kernel at ============================================================
predefined crashpoints to evaluate the reliability of crash dumps obtained Provoking crashes with Linux Kernel Dump Test Module (LKDTM)
using different dumping solutions. The module uses KPROBEs to instrument ============================================================
crashing points, but can also crash the kernel directly without KRPOBE
support.
The lkdtm module provides an interface to disrupt (and usually crash)
the kernel at predefined code locations to evaluate the reliability of
the kernel's exception handling and to test crash dumps obtained using
different dumping solutions. The module uses KPROBEs to instrument the
trigger location, but can also trigger the kernel directly without KPROBE
support via debugfs.
You can provide the way either through module arguments when inserting You can select the location of the trigger ("crash point name") and the
the module, or through a debugfs interface. type of action ("crash point type") either through module arguments when
inserting the module, or through the debugfs interface.
Usage:: Usage::
...@@ -18,31 +21,38 @@ Usage:: ...@@ -18,31 +21,38 @@ Usage::
[cpoint_count={>0}] [cpoint_count={>0}]
recur_count recur_count
Recursion level for the stack overflow test. Default is 10. Recursion level for the stack overflow test. By default this is
dynamically calculated based on kernel configuration, with the
goal of being just large enough to exhaust the kernel stack. The
value can be seen at `/sys/module/lkdtm/parameters/recur_count`.
cpoint_name cpoint_name
Crash point where the kernel is to be crashed. It can be Where in the kernel to trigger the action. It can be
one of INT_HARDWARE_ENTRY, INT_HW_IRQ_EN, INT_TASKLET_ENTRY, one of INT_HARDWARE_ENTRY, INT_HW_IRQ_EN, INT_TASKLET_ENTRY,
FS_DEVRW, MEM_SWAPOUT, TIMERADD, SCSI_DISPATCH_CMD, FS_DEVRW, MEM_SWAPOUT, TIMERADD, SCSI_DISPATCH_CMD,
IDE_CORE_CP, DIRECT IDE_CORE_CP, or DIRECT
cpoint_type cpoint_type
Indicates the action to be taken on hitting the crash point. Indicates the action to be taken on hitting the crash point.
It can be one of PANIC, BUG, EXCEPTION, LOOP, OVERFLOW, These are numerous, and best queried directly from debugfs. Some
CORRUPT_STACK, UNALIGNED_LOAD_STORE_WRITE, OVERWRITE_ALLOCATION, of the common ones are PANIC, BUG, EXCEPTION, LOOP, and OVERFLOW.
WRITE_AFTER_FREE, See the contents of `/sys/kernel/debug/provoke-crash/DIRECT` for
a complete list.
cpoint_count cpoint_count
Indicates the number of times the crash point is to be hit Indicates the number of times the crash point is to be hit
to trigger an action. The default is 10. before triggering the action. The default is 10 (except for
DIRECT, which always fires immediately).
You can also induce failures by mounting debugfs and writing the type to You can also induce failures by mounting debugfs and writing the type to
<mountpoint>/provoke-crash/<crashpoint>. E.g.:: <debugfs>/provoke-crash/<crashpoint>. E.g.::
mount -t debugfs debugfs /mnt mount -t debugfs debugfs /sys/kernel/debug
echo EXCEPTION > /mnt/provoke-crash/INT_HARDWARE_ENTRY echo EXCEPTION > /sys/kernel/debug/provoke-crash/INT_HARDWARE_ENTRY
The special file `DIRECT` will induce the action directly without KPROBE
instrumentation. This mode is the only one available when the module is
built for a kernel without KPROBEs support::
A special file is `DIRECT` which will induce the crash directly without # Instead of having a BUG kill your shell, have it kill "cat":
KPROBE instrumentation. This mode is the only one available when the module cat <(echo WRITE_RO) >/sys/kernel/debug/provoke-crash/DIRECT
is built on a kernel without KPROBEs support.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment