[ GIT PULL ] rv: A couple of fixes for v6.18

Steven Rostedt posted 1 patch 3 months, 2 weeks ago
kernel/trace/rv/monitors/pagefault/Kconfig |  1 +
kernel/trace/rv/rv.c                       | 12 ++++++------
2 files changed, 7 insertions(+), 6 deletions(-)
[ GIT PULL ] rv: A couple of fixes for v6.18
Posted by Steven Rostedt 3 months, 2 weeks ago

Linus,

A couple of fixes for Runtime Verification

- A bug caused a kernel panic when reading enabled_monitors was reported.
  Change callbacks functions to always use list_head iterators and by
  doing so, fix the wrong pointer that was leading to the panic.

- The rtapp/pagefault monitor relies on the MMU to be present
  (pagefaults exist) but that was not enforced via kconfig, leading to
  potential build errors on systems without an MMU. Add that kconfig
  dependency.


Please pull the latest trace-rv-v6.18-rc2 tree, which can be found at:


  git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
trace-rv-v6.18-rc2

Tag SHA1: 710476ae493b02551d9987bdbd52f4c3cf3bffef
Head SHA1: 3d62f95bd8450cebb4a4741bf83949cd54edd4a3


Nam Cao (2):
      rv: Fully convert enabled_monitors to use list_head as iterator
      rv: Make rtapp/pagefault monitor depends on CONFIG_MMU

----
 kernel/trace/rv/monitors/pagefault/Kconfig |  1 +
 kernel/trace/rv/rv.c                       | 12 ++++++------
 2 files changed, 7 insertions(+), 6 deletions(-)
---------------------------
diff --git a/kernel/trace/rv/monitors/pagefault/Kconfig b/kernel/trace/rv/monitors/pagefault/Kconfig
index 5e16625f1653..0e013f00c33b 100644
--- a/kernel/trace/rv/monitors/pagefault/Kconfig
+++ b/kernel/trace/rv/monitors/pagefault/Kconfig
@@ -5,6 +5,7 @@ config RV_MON_PAGEFAULT
 	select RV_LTL_MONITOR
 	depends on RV_MON_RTAPP
 	depends on X86 || RISCV
+	depends on MMU
 	default y
 	select LTL_MON_EVENTS_ID
 	bool "pagefault monitor"
diff --git a/kernel/trace/rv/rv.c b/kernel/trace/rv/rv.c
index 48338520376f..43e9ea473cda 100644
--- a/kernel/trace/rv/rv.c
+++ b/kernel/trace/rv/rv.c
@@ -501,7 +501,7 @@ static void *enabled_monitors_next(struct seq_file *m, void *p, loff_t *pos)
 
 	list_for_each_entry_continue(mon, &rv_monitors_list, list) {
 		if (mon->enabled)
-			return mon;
+			return &mon->list;
 	}
 
 	return NULL;
@@ -509,7 +509,7 @@ static void *enabled_monitors_next(struct seq_file *m, void *p, loff_t *pos)
 
 static void *enabled_monitors_start(struct seq_file *m, loff_t *pos)
 {
-	struct rv_monitor *mon;
+	struct list_head *head;
 	loff_t l;
 
 	mutex_lock(&rv_interface_lock);
@@ -517,15 +517,15 @@ static void *enabled_monitors_start(struct seq_file *m, loff_t *pos)
 	if (list_empty(&rv_monitors_list))
 		return NULL;
 
-	mon = list_entry(&rv_monitors_list, struct rv_monitor, list);
+	head = &rv_monitors_list;
 
 	for (l = 0; l <= *pos; ) {
-		mon = enabled_monitors_next(m, mon, &l);
-		if (!mon)
+		head = enabled_monitors_next(m, head, &l);
+		if (!head)
 			break;
 	}
 
-	return mon;
+	return head;
 }
 
 /*