On Tue, 2025-10-14 at 07:51 +0200, Thomas Weißschuh wrote: > Reactors can be called from any context through tracepoints. > When developing reactors care needs to be taken to only call APIs which > are safe. As the tracepoints used during testing may not actually be > called from restrictive contexts lockdep may not be helpful. > > Add explicit overrides to help lockdep find invalid code patterns. > > The usage of LD_WAIT_FREE will trigger lockdep warnings in the panic > reactor. These are indeed valid warnings but they are out of scope for > RV and will instead be fixed by the printk subsystem.
Looks like a nice addition! If I get it correctly, this patch does trigger a lockdep warning with the current state of the kernel. Is there a plan of fixing the warning in printk? I assume this series would need to wait for that or did you have other ideas? Thanks, Gabriele > > Signed-off-by: Thomas Weißschuh <[email protected]> > --- > kernel/trace/rv/rv_reactors.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/kernel/trace/rv/rv_reactors.c b/kernel/trace/rv/rv_reactors.c > index > 8c02426bc3bd944265f809e431283d1a20d56a8c..d9d335ae9badaa320f1d35dd159a033c3a30 > eb1a 100644 > --- a/kernel/trace/rv/rv_reactors.c > +++ b/kernel/trace/rv/rv_reactors.c > @@ -61,6 +61,7 @@ > * printk > */ > > +#include <linux/lockdep.h> > #include <linux/slab.h> > > #include "rv.h" > @@ -480,6 +481,7 @@ int init_rv_reactors(struct dentry *root_dir) > > void rv_react(struct rv_monitor *monitor, const char *msg, ...) > { > + static DEFINE_WAIT_OVERRIDE_MAP(rv_react_map, LD_WAIT_FREE); > va_list args; > > if (!rv_reacting_on() || !monitor->react) > @@ -487,7 +489,9 @@ void rv_react(struct rv_monitor *monitor, const char *msg, > ...) > > va_start(args, msg); > > + lock_map_acquire_try(&rv_react_map); > monitor->react(msg, args); > + lock_map_release(&rv_react_map); > > va_end(args); > }
