+++ /dev/null
-#!/bin/bash
-#
-# Usage: failmodule <failname> <modulename> [stacktrace-depth]
-#
-#      <failname>: "failslab", "fail_alloc_page", or "fail_make_request"
-#
-#      <modulename>: module name that you want to inject faults.
-#
-#      [stacktrace-depth]: the maximum number of stacktrace walking allowed
-#
-
-STACKTRACE_DEPTH=5
-if [ $# -gt 2 ]; then
-       STACKTRACE_DEPTH=$3
-fi
-
-if [ ! -d /debug/$1 ]; then
-       echo "Fault-injection $1 does not exist" >&2
-       exit 1
-fi
-if [ ! -d /sys/module/$2 ]; then
-       echo "Module $2 does not exist" >&2
-       exit 1
-fi
-
-# Disable any fault injection
-echo 0 > /debug/$1/stacktrace-depth
-
-echo `cat /sys/module/$2/sections/.text` > /debug/$1/require-start
-echo `cat /sys/module/$2/sections/.exit.text` > /debug/$1/require-end
-echo $STACKTRACE_DEPTH > /debug/$1/stacktrace-depth
 
 Application Examples
 --------------------
 
-o inject slab allocation failures into module init/cleanup code
+o Inject slab allocation failures into module init/exit code
 
-------------------------------------------------------------------------------
 #!/bin/bash
 
-FAILCMD=Documentation/fault-injection/failcmd.sh
-BLACKLIST="root_plug evbug"
-
-FAILNAME=failslab
-echo Y > /debug/$FAILNAME/task-filter
-echo 10 > /debug/$FAILNAME/probability
-echo 100 > /debug/$FAILNAME/interval
-echo -1 > /debug/$FAILNAME/times
-echo 2 > /debug/$FAILNAME/verbose
-echo 1 > /debug/$FAILNAME/ignore-gfp-wait
+FAILTYPE=failslab
+echo Y > /debug/$FAILTYPE/task-filter
+echo 10 > /debug/$FAILTYPE/probability
+echo 100 > /debug/$FAILTYPE/interval
+echo -1 > /debug/$FAILTYPE/times
+echo 0 > /debug/$FAILTYPE/space
+echo 2 > /debug/$FAILTYPE/verbose
+echo 1 > /debug/$FAILTYPE/ignore-gfp-wait
 
-blacklist()
+faulty_system()
 {
-       echo $BLACKLIST | grep $1 > /dev/null 2>&1
+       bash -c "echo 1 > /proc/self/make-it-fail && exec $*"
 }
 
-oops()
-{
-       dmesg | grep BUG > /dev/null 2>&1
-}
+if [ $# -eq 0 ]
+then
+       echo "Usage: $0 modulename [ modulename ... ]"
+       exit 1
+fi
+
+for m in $*
+do
+       echo inserting $m...
+       faulty_system modprobe $m
 
-find /lib/modules/`uname -r` -name '*.ko' -exec basename {} .ko \; |
-       while read i
-       do
-               oops && exit 1
-
-               if ! blacklist $i
-               then
-                       echo inserting $i...
-                       bash $FAILCMD modprobe $i
-               fi
-       done
-
-lsmod | awk '{ if ($3 == 0) { print $1 } }' |
-       while read i
-       do
-               oops && exit 1
-
-               if ! blacklist $i
-               then
-                       echo removing $i...
-                       bash $FAILCMD modprobe -r $i
-               fi
-       done
+       echo removing $m...
+       faulty_system modprobe -r $m
+done
 
 ------------------------------------------------------------------------------
 
-o inject slab allocation failures only for a specific module
+o Inject page allocation failures only for a specific module
 
-------------------------------------------------------------------------------
 #!/bin/bash
 
-FAILMOD=Documentation/fault-injection/failmodule.sh
+FAILTYPE=fail_page_alloc
+module=$1
 
-echo injecting errors into the module $1...
+if [ -z $module ]
+then
+       echo "Usage: $0 <modulename>"
+       exit 1
+fi
 
-modprobe $1
-bash $FAILMOD failslab $1 10
-echo 25 > /debug/failslab/probability
+modprobe $module
 
-------------------------------------------------------------------------------
+if [ ! -d /sys/module/$module/sections ]
+then
+       echo Module $module is not loaded
+       exit 1
+fi
+
+cat /sys/module/$module/sections/.text > /debug/$FAILTYPE/require-start
+cat /sys/module/$module/sections/.data > /debug/$FAILTYPE/require-end
+
+echo N > /debug/$FAILTYPE/task-filter
+echo 10 > /debug/$FAILTYPE/probability
+echo 100 > /debug/$FAILTYPE/interval
+echo -1 > /debug/$FAILTYPE/times
+echo 0 > /debug/$FAILTYPE/space
+echo 2 > /debug/$FAILTYPE/verbose
+echo 1 > /debug/$FAILTYPE/ignore-gfp-wait
+echo 1 > /debug/$FAILTYPE/ignore-gfp-highmem
+echo 10 > /debug/$FAILTYPE/stacktrace-depth
+
+trap "echo 0 > /debug/$FAILTYPE/probability" SIGINT SIGTERM EXIT
+
+echo "Injecting errors into the module $module... (interrupt to stop)"
+sleep 1000000