[PATCH 5/6] rv: Remove the nop reactor
From: Nam Cao
Date: Mon Jul 21 2025 - 05:48:20 EST
As suggested by the name, the nop reactor does not do anything. It is the
default reactor when nothing else is selected.
However, the monitors already null-check the reactor function pointers.
Thus, instead of a nop reactor, just set the react function pointer to
NULL. The nop reactor can then be removed.
Signed-off-by: Nam Cao <namcao@xxxxxxxxxxxxx>
---
kernel/trace/rv/rv_reactors.c | 63 ++++++-----------------------------
1 file changed, 11 insertions(+), 52 deletions(-)
diff --git a/kernel/trace/rv/rv_reactors.c b/kernel/trace/rv/rv_reactors.c
index a8e849e6cd85..aee622e4b833 100644
--- a/kernel/trace/rv/rv_reactors.c
+++ b/kernel/trace/rv/rv_reactors.c
@@ -70,17 +70,6 @@
*/
static LIST_HEAD(rv_reactors_list);
-static struct rv_reactor *get_reactor_rdef_by_name(char *name)
-{
- struct rv_reactor *r;
-
- list_for_each_entry(r, &rv_reactors_list, list) {
- if (strcmp(name, r->name) == 0)
- return r;
- }
- return NULL;
-}
-
/*
* Available reactors seq functions.
*/
@@ -174,7 +163,7 @@ static void monitor_swap_reactors_single(struct rv_monitor *mon,
mon->reactor = reactor;
mon->reacting = reacting;
- mon->react = reactor->react;
+ mon->react = reactor ? reactor->react : NULL;
/* enable only once if iterating through a container */
if (monitor_enabled && !nested)
@@ -210,10 +199,15 @@ monitor_reactors_write(struct file *file, const char __user *user_buf,
struct rv_reactor *reactor;
struct seq_file *seq_f;
int retval = -EINVAL;
- bool enable;
char *ptr;
int len;
+ /*
+ * See monitor_reactors_open()
+ */
+ seq_f = file->private_data;
+ mon = seq_f->private;
+
if (count < 1 || count > MAX_RV_REACTOR_NAME_SIZE + 1)
return -EINVAL;
@@ -226,14 +220,10 @@ monitor_reactors_write(struct file *file, const char __user *user_buf,
ptr = strim(buff);
len = strlen(ptr);
- if (!len)
+ if (!len) {
+ monitor_swap_reactors(mon, NULL, false);
return count;
-
- /*
- * See monitor_reactors_open()
- */
- seq_f = file->private_data;
- mon = seq_f->private;
+ }
mutex_lock(&rv_interface_lock);
@@ -243,12 +233,7 @@ monitor_reactors_write(struct file *file, const char __user *user_buf,
if (strcmp(ptr, reactor->name) != 0)
continue;
- if (strcmp(reactor->name, "nop"))
- enable = false;
- else
- enable = true;
-
- monitor_swap_reactors(mon, reactor, enable);
+ monitor_swap_reactors(mon, reactor, true);
retval = count;
break;
@@ -435,32 +420,12 @@ int reactor_populate_monitor(struct rv_monitor *mon)
if (!tmp)
return -ENOMEM;
- /*
- * Configure as the rv_nop reactor.
- */
- mon->reactor = get_reactor_rdef_by_name("nop");
- mon->reacting = false;
-
return 0;
}
-/*
- * Nop reactor register
- */
-__printf(1, 2) static void rv_nop_reaction(const char *msg, ...)
-{
-}
-
-static struct rv_reactor rv_nop = {
- .name = "nop",
- .description = "no-operation reactor: do nothing.",
- .react = rv_nop_reaction
-};
-
int init_rv_reactors(struct dentry *root_dir)
{
struct dentry *available, *reacting;
- int retval;
available = rv_create_file("available_reactors", RV_MODE_READ, root_dir, NULL,
&available_reactors_ops);
@@ -471,16 +436,10 @@ int init_rv_reactors(struct dentry *root_dir)
if (!reacting)
goto rm_available;
- retval = __rv_register_reactor(&rv_nop);
- if (retval)
- goto rm_reacting;
-
turn_reacting_on();
return 0;
-rm_reacting:
- rv_remove(reacting);
rm_available:
rv_remove(available);
out_err:
--
2.39.5