Skip to content

Commit ac8bf0d

Browse files
keesJonathan Corbet
authored andcommitted
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: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20201015224559.2137489-1-keescook@chromium.org Signed-off-by: Jonathan Corbet <corbet@lwn.net>
1 parent 27def95 commit ac8bf0d

1 file changed

Lines changed: 33 additions & 23 deletions

File tree

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,58 @@
1-
===============
2-
Provoke crashes
3-
===============
1+
.. SPDX-License-Identifier: GPL-2.0
42
5-
The lkdtm module provides an interface to crash or injure the kernel at
6-
predefined crashpoints to evaluate the reliability of crash dumps obtained
7-
using different dumping solutions. The module uses KPROBEs to instrument
8-
crashing points, but can also crash the kernel directly without KRPOBE
9-
support.
3+
============================================================
4+
Provoking crashes with Linux Kernel Dump Test Module (LKDTM)
5+
============================================================
106

7+
The lkdtm module provides an interface to disrupt (and usually crash)
8+
the kernel at predefined code locations to evaluate the reliability of
9+
the kernel's exception handling and to test crash dumps obtained using
10+
different dumping solutions. The module uses KPROBEs to instrument the
11+
trigger location, but can also trigger the kernel directly without KPROBE
12+
support via debugfs.
1113

12-
You can provide the way either through module arguments when inserting
13-
the module, or through a debugfs interface.
14+
You can select the location of the trigger ("crash point name") and the
15+
type of action ("crash point type") either through module arguments when
16+
inserting the module, or through the debugfs interface.
1417

1518
Usage::
1619

1720
insmod lkdtm.ko [recur_count={>0}] cpoint_name=<> cpoint_type=<>
1821
[cpoint_count={>0}]
1922

2023
recur_count
21-
Recursion level for the stack overflow test. Default is 10.
24+
Recursion level for the stack overflow test. By default this is
25+
dynamically calculated based on kernel configuration, with the
26+
goal of being just large enough to exhaust the kernel stack. The
27+
value can be seen at `/sys/module/lkdtm/parameters/recur_count`.
2228

2329
cpoint_name
24-
Crash point where the kernel is to be crashed. It can be
30+
Where in the kernel to trigger the action. It can be
2531
one of INT_HARDWARE_ENTRY, INT_HW_IRQ_EN, INT_TASKLET_ENTRY,
2632
FS_DEVRW, MEM_SWAPOUT, TIMERADD, SCSI_DISPATCH_CMD,
27-
IDE_CORE_CP, DIRECT
33+
IDE_CORE_CP, or DIRECT
2834

2935
cpoint_type
3036
Indicates the action to be taken on hitting the crash point.
31-
It can be one of PANIC, BUG, EXCEPTION, LOOP, OVERFLOW,
32-
CORRUPT_STACK, UNALIGNED_LOAD_STORE_WRITE, OVERWRITE_ALLOCATION,
33-
WRITE_AFTER_FREE,
37+
These are numerous, and best queried directly from debugfs. Some
38+
of the common ones are PANIC, BUG, EXCEPTION, LOOP, and OVERFLOW.
39+
See the contents of `/sys/kernel/debug/provoke-crash/DIRECT` for
40+
a complete list.
3441

3542
cpoint_count
3643
Indicates the number of times the crash point is to be hit
37-
to trigger an action. The default is 10.
44+
before triggering the action. The default is 10 (except for
45+
DIRECT, which always fires immediately).
3846

3947
You can also induce failures by mounting debugfs and writing the type to
40-
<mountpoint>/provoke-crash/<crashpoint>. E.g.::
48+
<debugfs>/provoke-crash/<crashpoint>. E.g.::
4149

42-
mount -t debugfs debugfs /mnt
43-
echo EXCEPTION > /mnt/provoke-crash/INT_HARDWARE_ENTRY
50+
mount -t debugfs debugfs /sys/kernel/debug
51+
echo EXCEPTION > /sys/kernel/debug/provoke-crash/INT_HARDWARE_ENTRY
4452

53+
The special file `DIRECT` will induce the action directly without KPROBE
54+
instrumentation. This mode is the only one available when the module is
55+
built for a kernel without KPROBEs support::
4556

46-
A special file is `DIRECT` which will induce the crash directly without
47-
KPROBE instrumentation. This mode is the only one available when the module
48-
is built on a kernel without KPROBEs support.
57+
# Instead of having a BUG kill your shell, have it kill "cat":
58+
cat <(echo WRITE_RO) >/sys/kernel/debug/provoke-crash/DIRECT

0 commit comments

Comments
 (0)