Merge branch 'akpm' (Andrew's patch-bomb)
Merge Andrew's first set of patches: "Non-MM patches: - lots of misc bits - tree-wide have_clk() cleanups - quite a lot of printk tweaks. I draw your attention to "printk: convert the format for KERN_<LEVEL> to a 2 byte pattern" which looks a bit scary. But afaict it's solid. - backlight updates - lib/ feature work (notably the addition and use of memweight()) - checkpatch updates - rtc updates - nilfs updates - fatfs updates (partial, still waiting for acks) - kdump, proc, fork, IPC, sysctl, taskstats, pps, etc - new fault-injection feature work" * Merge emailed patches from Andrew Morton <akpm@linux-foundation.org>: (128 commits) drivers/misc/lkdtm.c: fix missing allocation failure check lib/scatterlist: do not re-write gfp_flags in __sg_alloc_table() fault-injection: add tool to run command with failslab or fail_page_alloc fault-injection: add selftests for cpu and memory hotplug powerpc: pSeries reconfig notifier error injection module memory: memory notifier error injection module PM: PM notifier error injection module cpu: rewrite cpu-notifier-error-inject module fault-injection: notifier error injection c/r: fcntl: add F_GETOWNER_UIDS option resource: make sure requested range is included in the root range include/linux/aio.h: cpp->C conversions fs: cachefiles: add support for large files in filesystem caching pps: return PTR_ERR on error in device_create taskstats: check nla_reserve() return sysctl: suppress kmemleak messages ipc: use Kconfig options for __ARCH_WANT_[COMPAT_]IPC_PARSE_VERSION ipc: compat: use signed size_t types for msgsnd and msgrcv ipc: allow compat IPC version field parsing if !ARCH_WANT_OLD_COMPAT_IPC ipc: add COMPAT_SHMLBA support ...
This commit is contained in:
@@ -240,3 +240,30 @@ trap "echo 0 > /sys/kernel/debug/$FAILTYPE/probability" SIGINT SIGTERM EXIT
|
||||
echo "Injecting errors into the module $module... (interrupt to stop)"
|
||||
sleep 1000000
|
||||
|
||||
Tool to run command with failslab or fail_page_alloc
|
||||
----------------------------------------------------
|
||||
In order to make it easier to accomplish the tasks mentioned above, we can use
|
||||
tools/testing/fault-injection/failcmd.sh. Please run a command
|
||||
"./tools/testing/fault-injection/failcmd.sh --help" for more information and
|
||||
see the following examples.
|
||||
|
||||
Examples:
|
||||
|
||||
Run a command "make -C tools/testing/selftests/ run_tests" with injecting slab
|
||||
allocation failure.
|
||||
|
||||
# ./tools/testing/fault-injection/failcmd.sh \
|
||||
-- make -C tools/testing/selftests/ run_tests
|
||||
|
||||
Same as above except to specify 100 times failures at most instead of one time
|
||||
at most by default.
|
||||
|
||||
# ./tools/testing/fault-injection/failcmd.sh --times=100 \
|
||||
-- make -C tools/testing/selftests/ run_tests
|
||||
|
||||
Same as above except to inject page allocation failure instead of slab
|
||||
allocation failure.
|
||||
|
||||
# env FAILCMD_TYPE=fail_page_alloc \
|
||||
./tools/testing/fault-injection/failcmd.sh --times=100 \
|
||||
-- make -C tools/testing/selftests/ run_tests
|
||||
|
99
Documentation/fault-injection/notifier-error-inject.txt
Normal file
99
Documentation/fault-injection/notifier-error-inject.txt
Normal file
@@ -0,0 +1,99 @@
|
||||
Notifier error injection
|
||||
========================
|
||||
|
||||
Notifier error injection provides the ability to inject artifical errors to
|
||||
specified notifier chain callbacks. It is useful to test the error handling of
|
||||
notifier call chain failures which is rarely executed. There are kernel
|
||||
modules that can be used to test the following notifiers.
|
||||
|
||||
* CPU notifier
|
||||
* PM notifier
|
||||
* Memory hotplug notifier
|
||||
* powerpc pSeries reconfig notifier
|
||||
|
||||
CPU notifier error injection module
|
||||
-----------------------------------
|
||||
This feature can be used to test the error handling of the CPU notifiers by
|
||||
injecting artifical errors to CPU notifier chain callbacks.
|
||||
|
||||
If the notifier call chain should be failed with some events notified, write
|
||||
the error code to debugfs interface
|
||||
/sys/kernel/debug/notifier-error-inject/cpu/actions/<notifier event>/error
|
||||
|
||||
Possible CPU notifier events to be failed are:
|
||||
|
||||
* CPU_UP_PREPARE
|
||||
* CPU_UP_PREPARE_FROZEN
|
||||
* CPU_DOWN_PREPARE
|
||||
* CPU_DOWN_PREPARE_FROZEN
|
||||
|
||||
Example1: Inject CPU offline error (-1 == -EPERM)
|
||||
|
||||
# cd /sys/kernel/debug/notifier-error-inject/cpu
|
||||
# echo -1 > actions/CPU_DOWN_PREPARE/error
|
||||
# echo 0 > /sys/devices/system/cpu/cpu1/online
|
||||
bash: echo: write error: Operation not permitted
|
||||
|
||||
Example2: inject CPU online error (-2 == -ENOENT)
|
||||
|
||||
# echo -2 > actions/CPU_UP_PREPARE/error
|
||||
# echo 1 > /sys/devices/system/cpu/cpu1/online
|
||||
bash: echo: write error: No such file or directory
|
||||
|
||||
PM notifier error injection module
|
||||
----------------------------------
|
||||
This feature is controlled through debugfs interface
|
||||
/sys/kernel/debug/notifier-error-inject/pm/actions/<notifier event>/error
|
||||
|
||||
Possible PM notifier events to be failed are:
|
||||
|
||||
* PM_HIBERNATION_PREPARE
|
||||
* PM_SUSPEND_PREPARE
|
||||
* PM_RESTORE_PREPARE
|
||||
|
||||
Example: Inject PM suspend error (-12 = -ENOMEM)
|
||||
|
||||
# cd /sys/kernel/debug/notifier-error-inject/pm/
|
||||
# echo -12 > actions/PM_SUSPEND_PREPARE/error
|
||||
# echo mem > /sys/power/state
|
||||
bash: echo: write error: Cannot allocate memory
|
||||
|
||||
Memory hotplug notifier error injection module
|
||||
----------------------------------------------
|
||||
This feature is controlled through debugfs interface
|
||||
/sys/kernel/debug/notifier-error-inject/memory/actions/<notifier event>/error
|
||||
|
||||
Possible memory notifier events to be failed are:
|
||||
|
||||
* MEM_GOING_ONLINE
|
||||
* MEM_GOING_OFFLINE
|
||||
|
||||
Example: Inject memory hotplug offline error (-12 == -ENOMEM)
|
||||
|
||||
# cd /sys/kernel/debug/notifier-error-inject/memory
|
||||
# echo -12 > actions/MEM_GOING_OFFLINE/error
|
||||
# echo offline > /sys/devices/system/memory/memoryXXX/state
|
||||
bash: echo: write error: Cannot allocate memory
|
||||
|
||||
powerpc pSeries reconfig notifier error injection module
|
||||
--------------------------------------------------------
|
||||
This feature is controlled through debugfs interface
|
||||
/sys/kernel/debug/notifier-error-inject/pSeries-reconfig/actions/<notifier event>/error
|
||||
|
||||
Possible pSeries reconfig notifier events to be failed are:
|
||||
|
||||
* PSERIES_RECONFIG_ADD
|
||||
* PSERIES_RECONFIG_REMOVE
|
||||
* PSERIES_DRCONF_MEM_ADD
|
||||
* PSERIES_DRCONF_MEM_REMOVE
|
||||
|
||||
For more usage examples
|
||||
-----------------------
|
||||
There are tools/testing/selftests using the notifier error injection features
|
||||
for CPU and memory notifiers.
|
||||
|
||||
* tools/testing/selftests/cpu-hotplug/on-off-test.sh
|
||||
* tools/testing/selftests/memory-hotplug/on-off-test.sh
|
||||
|
||||
These scripts first do simple online and offline tests and then do fault
|
||||
injection tests if notifier error injection module is available.
|
@@ -53,9 +53,20 @@ Struct Resources:
|
||||
For printing struct resources. The 'R' and 'r' specifiers result in a
|
||||
printed resource with ('R') or without ('r') a decoded flags member.
|
||||
|
||||
Raw buffer as a hex string:
|
||||
%*ph 00 01 02 ... 3f
|
||||
%*phC 00:01:02: ... :3f
|
||||
%*phD 00-01-02- ... -3f
|
||||
%*phN 000102 ... 3f
|
||||
|
||||
For printing a small buffers (up to 64 bytes long) as a hex string with
|
||||
certain separator. For the larger buffers consider to use
|
||||
print_hex_dump().
|
||||
|
||||
MAC/FDDI addresses:
|
||||
|
||||
%pM 00:01:02:03:04:05
|
||||
%pMR 05:04:03:02:01:00
|
||||
%pMF 00-01-02-03-04-05
|
||||
%pm 000102030405
|
||||
|
||||
@@ -67,6 +78,10 @@ MAC/FDDI addresses:
|
||||
the 'M' specifier to use dash ('-') separators instead of the default
|
||||
separator.
|
||||
|
||||
For Bluetooth addresses the 'R' specifier shall be used after the 'M'
|
||||
specifier to use reversed byte order suitable for visual interpretation
|
||||
of Bluetooth addresses which are in the little endian order.
|
||||
|
||||
IPv4 addresses:
|
||||
|
||||
%pI4 1.2.3.4
|
||||
|
@@ -163,16 +163,22 @@ This value can be used to query and set the core dump mode for setuid
|
||||
or otherwise protected/tainted binaries. The modes are
|
||||
|
||||
0 - (default) - traditional behaviour. Any process which has changed
|
||||
privilege levels or is execute only will not be dumped
|
||||
privilege levels or is execute only will not be dumped.
|
||||
1 - (debug) - all processes dump core when possible. The core dump is
|
||||
owned by the current user and no security is applied. This is
|
||||
intended for system debugging situations only. Ptrace is unchecked.
|
||||
This is insecure as it allows regular users to examine the memory
|
||||
contents of privileged processes.
|
||||
2 - (suidsafe) - any binary which normally would not be dumped is dumped
|
||||
readable by root only. This allows the end user to remove
|
||||
such a dump but not access it directly. For security reasons
|
||||
core dumps in this mode will not overwrite one another or
|
||||
other files. This mode is appropriate when administrators are
|
||||
attempting to debug problems in a normal environment.
|
||||
anyway, but only if the "core_pattern" kernel sysctl is set to
|
||||
either a pipe handler or a fully qualified path. (For more details
|
||||
on this limitation, see CVE-2006-2451.) This mode is appropriate
|
||||
when administrators are attempting to debug problems in a normal
|
||||
environment, and either have a core dump pipe handler that knows
|
||||
to treat privileged core dumps with care, or specific directory
|
||||
defined for catching core dumps. If a core dump happens without
|
||||
a pipe handler or fully qualifid path, a message will be emitted
|
||||
to syslog warning about the lack of a correct setting.
|
||||
|
||||
==============================================================
|
||||
|
||||
|
Reference in New Issue
Block a user