Re: [PATCH 2/2] moderr: add module error injection tool
From: Daniel Gomez
Date: Tue Feb 04 2025 - 08:53:10 EST
On Wed, Jan 22, 2025 at 09:02:19AM +0100, Alexei Starovoitov wrote:
> On Wed, Jan 22, 2025 at 5:12 AM Daniel Gomez <da.gomez@xxxxxxxxxxx> wrote:
> >
> > Add support for a module error injection tool. The tool
> > can inject errors in the annotated module kernel functions
> > such as complete_formation(), do_init_module() and
> > module_enable_rodata_after_init(). Module name and module function are
> > required parameters to have control over the error injection.
> >
> > Example: Inject error -22 to module_enable_rodata_ro_after_init for
> > brd module:
> >
> > sudo moderr --modname=brd --modfunc=module_enable_rodata_ro_after_init \
> > --error=-22 --trace
> > Monitoring module error injection... Hit Ctrl-C to end.
> > MODULE ERROR FUNCTION
> > brd -22 module_enable_rodata_after_init()
> >
> > Kernel messages:
> > [ 89.463690] brd: module loaded
> > [ 89.463855] brd: module_enable_rodata_ro_after_init() returned -22,
> > ro_after_init data might still be writable
> >
> > Signed-off-by: Daniel Gomez <da.gomez@xxxxxxxxxxx>
> > ---
> > tools/bpf/Makefile | 13 ++-
> > tools/bpf/moderr/.gitignore | 2 +
> > tools/bpf/moderr/Makefile | 95 +++++++++++++++++
> > tools/bpf/moderr/moderr.bpf.c | 127 +++++++++++++++++++++++
> > tools/bpf/moderr/moderr.c | 236 ++++++++++++++++++++++++++++++++++++++++++
> > tools/bpf/moderr/moderr.h | 40 +++++++
> > 6 files changed, 510 insertions(+), 3 deletions(-)
>
> The tool looks useful, but we don't add tools to the kernel repo.
> It has to stay out of tree.
Can you clarify what do you mean? There are other tools under tools/ and tools/
bpf [1].
[1] https://lore.kernel.org/bpf/20200114184230.GA204154@krava/
I will anyway move the tool to the suggested location in the other thread.
>
> The value of error injection is not clear to me.
> Other places in the kernel use it to test paths in the kernel
> that are difficult to do otherwise.
By any chance do you know which tool are they using?
> These 3 functions don't seem to be in this category.
Luis already answered this.