€•Š0Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ3/translations/zh_CN/fault-injection/provoke-crashes”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/zh_TW/fault-injection/provoke-crashes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/it_IT/fault-injection/provoke-crashes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/ja_JP/fault-injection/provoke-crashes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/ko_KR/fault-injection/provoke-crashes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/pt_BR/fault-injection/provoke-crashes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/sp_SP/fault-injection/provoke-crashes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒM/var/lib/git/docbuild/linux/Documentation/fault-injection/provoke-crashes.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ0}] cpoint_name=<> cpoint_type=<> [cpoint_count={>0}]”h]”hŒdinsmod lkdtm.ko [recur_count={>0}] cpoint_name=<> cpoint_type=<> [cpoint_count={>0}]”…””}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´KhhÊh²hubhŒdefinition_list”“”)”}”(hhh]”(hŒdefinition_list_item”“”)”}”(hX recur_count 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`. ”h]”(hŒterm”“”)”}”(hŒ recur_count”h]”hŒ recur_count”…””}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³hÇh´Khj ubhŒ definition”“”)”}”(hhh]”hÞ)”}”(hXRecursion 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`.”h]”(hŒÕ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 ”…””}”(hj9h²hh³Nh´NubhŒtitle_reference”“”)”}”(hŒ*`/sys/module/lkdtm/parameters/recur_count`”h]”hŒ(/sys/module/lkdtm/parameters/recur_count”…””}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj9ubhŒ.”…””}”(hj9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j4hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Khjubj)”}”(hŒ½cpoint_name Where in the kernel to trigger the action. It can be one of INT_HARDWARE_ENTRY, INT_HW_IRQ_EN, INT_TASKLET_ENTRY, FS_SUBMIT_BH, MEM_SWAPOUT, TIMERADD, SCSI_QUEUE_RQ, or DIRECT. ”h]”(j%)”}”(hŒ cpoint_name”h]”hŒ cpoint_name”…””}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³hÇh´K hjgubj5)”}”(hhh]”hÞ)”}”(hŒ°Where in the kernel to trigger the action. It can be one of INT_HARDWARE_ENTRY, INT_HW_IRQ_EN, INT_TASKLET_ENTRY, FS_SUBMIT_BH, MEM_SWAPOUT, TIMERADD, SCSI_QUEUE_RQ, or DIRECT.”h]”hŒ°Where in the kernel to trigger the action. It can be one of INT_HARDWARE_ENTRY, INT_HW_IRQ_EN, INT_TASKLET_ENTRY, FS_SUBMIT_BH, MEM_SWAPOUT, TIMERADD, SCSI_QUEUE_RQ, or DIRECT.”…””}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j4hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K hjh²hubj)”}”(hXcpoint_type Indicates the action to be taken on hitting the crash point. These are numerous, and best queried directly from debugfs. Some of the common ones are PANIC, BUG, EXCEPTION, LOOP, and OVERFLOW. See the contents of `/sys/kernel/debug/provoke-crash/DIRECT` for a complete list. ”h]”(j%)”}”(hŒ cpoint_type”h]”hŒ cpoint_type”…””}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³hÇh´K'hj–ubj5)”}”(hhh]”hÞ)”}”(hXIndicates the action to be taken on hitting the crash point. These are numerous, and best queried directly from debugfs. Some of the common ones are PANIC, BUG, EXCEPTION, LOOP, and OVERFLOW. See the contents of `/sys/kernel/debug/provoke-crash/DIRECT` for a complete list.”h]”(hŒÔIndicates the action to be taken on hitting the crash point. These are numerous, and best queried directly from debugfs. Some of the common ones are PANIC, BUG, EXCEPTION, LOOP, and OVERFLOW. See the contents of ”…””}”(hj«h²hh³Nh´NubjB)”}”(hŒ(`/sys/kernel/debug/provoke-crash/DIRECT`”h]”hŒ&/sys/kernel/debug/provoke-crash/DIRECT”…””}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj«ubhŒ for a complete list.”…””}”(hj«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K#hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j4hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K'hjh²hubj)”}”(hŒ­cpoint_count Indicates the number of times the crash point is to be hit before triggering the action. The default is 10 (except for DIRECT, which always fires immediately). ”h]”(j%)”}”(hŒ cpoint_count”h]”hŒ cpoint_count”…””}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³hÇh´K,hj×ubj5)”}”(hhh]”hÞ)”}”(hŒŸIndicates the number of times the crash point is to be hit before triggering the action. The default is 10 (except for DIRECT, which always fires immediately).”h]”hŒŸIndicates the number of times the crash point is to be hit before triggering the action. The default is 10 (except for DIRECT, which always fires immediately).”…””}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K*hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j4hj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K,hjh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhÊh²hh³hÇh´NubhÞ)”}”(hŒuYou can also induce failures by mounting debugfs and writing the type to /provoke-crash/. E.g.::”h]”hŒtYou can also induce failures by mounting debugfs and writing the type to /provoke-crash/. E.g.:”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K.hhÊh²hubj )”}”(hŒnmount -t debugfs debugfs /sys/kernel/debug echo EXCEPTION > /sys/kernel/debug/provoke-crash/INT_HARDWARE_ENTRY”h]”hŒnmount -t debugfs debugfs /sys/kernel/debug echo EXCEPTION > /sys/kernel/debug/provoke-crash/INT_HARDWARE_ENTRY”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´K1hhÊh²hubhÞ)”}”(hŒ½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::”h]”(hŒThe special file ”…””}”(hj(h²hh³Nh´NubjB)”}”(hŒ`DIRECT`”h]”hŒDIRECT”…””}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj(ubhŒ£ 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:”…””}”(hj(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K4hhÊh²hubj )”}”(hŒ{# Instead of having a BUG kill your shell, have it kill "cat": cat <(echo WRITE_RO) >/sys/kernel/debug/provoke-crash/DIRECT”h]”hŒ{# Instead of having a BUG kill your shell, have it kill "cat": cat <(echo WRITE_RO) >/sys/kernel/debug/provoke-crash/DIRECT”…””}”hjHsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´K8hhÊh²hubeh}”(h]”Œ:provoking-crashes-with-linux-kernel-dump-test-module-lkdtm”ah ]”h"]”Œ