121 lines
2.6 KiB
Groff
121 lines
2.6 KiB
Groff
.TH inject 8 "2018-03-16" "USER COMMANDS"
|
|
|
|
|
|
.SH NAME
|
|
inject \- injects appropriate error into function if input call chain and
|
|
predicates are satisfied. Uses Linux eBPF/bcc.
|
|
|
|
|
|
.SH SYNOPSIS
|
|
.B inject -h [-I header] [-P probability] [-v] [-c count] <mode> <spec>
|
|
|
|
|
|
.SH DESCRIPTION
|
|
inject injects errors into specified kernel functionality when a given call
|
|
chain and associated predicates are satisfied.
|
|
|
|
WARNING: This tool injects failures into key kernel functions and may crash the
|
|
kernel. You should know what you're doing if you're using this tool.
|
|
|
|
This makes use of a Linux 4.16 feature (bpf_override_return())
|
|
|
|
Since this uses BPF, only the root user can use this tool.
|
|
|
|
|
|
.SH OPTIONS
|
|
.TP
|
|
\-h
|
|
Print usage message.
|
|
.TP
|
|
\-v
|
|
Display the generated BPF program, for debugging or modification.
|
|
.TP
|
|
\-I header
|
|
Necessary headers to be included.
|
|
.TP
|
|
\-P probability
|
|
Optional probability of failure, default 1.
|
|
.TP
|
|
\-c count
|
|
Number of errors to inject before stopping, default never stops.
|
|
|
|
|
|
.SH MODE
|
|
|
|
.TP
|
|
\fBkmalloc\fR
|
|
Make the following function indicate failure
|
|
.RS 14
|
|
int should_failslab(struct kmem_cache *s, gfp_t gfpflags)
|
|
.RE
|
|
|
|
.TP
|
|
\fBbio\fR
|
|
Make the following function indicate failure
|
|
.RS 14
|
|
int should_fail_bio(struct bio *bio)
|
|
.RE
|
|
|
|
.TP
|
|
\fBalloc_page\fR
|
|
Make the following function indicate failure
|
|
.RS 14
|
|
bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
|
|
.RE
|
|
|
|
|
|
.SH SPEC
|
|
.B FUNCTION([ARGS])[(TEST)] [=> ...]
|
|
|
|
A list of predicates separated by "=>". A predicate is a function signature
|
|
(name and arguments) in a call stack and a test on the function's arguments.
|
|
|
|
Missing predicates are implicitly true. Missing tests are implicitly true.
|
|
Specifying the function arguments is optional if the test does not use them.
|
|
If the error injection function is not listed as the first predicate, it is
|
|
implicitly added.
|
|
|
|
Functions are listed in the reverse order that they are called, ie. if a()
|
|
calls b(), the spec would be "b() => a()".
|
|
|
|
|
|
.SH REQUIREMENTS
|
|
CONFIG_BPF, CONFIG_BPF_KPROBE_OVERRIDE, bcc
|
|
|
|
|
|
.SH EXAMPLES
|
|
.EX
|
|
inject kmalloc -v 'SyS_mount()'
|
|
.EE
|
|
|
|
.EX
|
|
inject kmalloc -v 'mount_subtree() => btrfs_mount()'
|
|
.EE
|
|
|
|
.EX
|
|
inject -P 0.5 -c 100 alloc_page "should_fail_alloc_page(gfp_t gfp_mask, unsigned int order) (order == 1) => qlge_refill_bq()"
|
|
.EE
|
|
|
|
Please see the output of '-h' and tools/inject_example.txt for more examples.
|
|
|
|
|
|
.SH SOURCE
|
|
This is from bcc.
|
|
.IP
|
|
https://github.com/iovisor/bcc
|
|
.PP
|
|
Also look in the bcc distribution for a companion _examples.txt file containing
|
|
example usage, output, and commentary for this tool.
|
|
|
|
|
|
.SH OS
|
|
Linux
|
|
|
|
|
|
.SH STABILITY
|
|
Unstable - in development.
|
|
|
|
|
|
.SH AUTHOR
|
|
Howard McLauchlan
|