Blame SOURCES/0002-Fix-for-the-invalid-ring_buffer-issue.patch

d8eb6f
From 86022cd76d9391f3c93553d1c76a444b2143a4e8 Mon Sep 17 00:00:00 2001
d8eb6f
From: Lianbo Jiang <lijiang@redhat.com>
d8eb6f
Date: Wed, 13 Jul 2022 22:27:33 +0800
d8eb6f
Subject: [PATCH 2/3] Fix for the invalid ring_buffer issue
d8eb6f
d8eb6f
Kernel commit e028157062b9 ("[kernel] perf: Make struct ring_buffer
d8eb6f
less ambiguous") renamed the struct ring_buffer to struct perf_buffer,
d8eb6f
which cause the following failure:
d8eb6f
d8eb6f
[0] invalid ring_buffer
d8eb6f
[1] invalid ring_buffer
d8eb6f
[2] invalid ring_buffer
d8eb6f
d8eb6f
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
d8eb6f
---
d8eb6f
 ptdump.c | 45 +++++++++++++++++++++++++++++++--------------
d8eb6f
 1 file changed, 31 insertions(+), 14 deletions(-)
d8eb6f
d8eb6f
diff --git a/ptdump.c b/ptdump.c
d8eb6f
index 736e1c8cddaf..54e4391739e3 100644
d8eb6f
--- a/ptdump.c
d8eb6f
+++ b/ptdump.c
d8eb6f
@@ -114,25 +114,42 @@ int init_pt_info(int cpu)
d8eb6f
 		struct_ring_buffer);
d8eb6f
 
d8eb6f
 	/* symbol access check */
d8eb6f
-	if (STRUCT_EXISTS("ring_buffer") &&
d8eb6f
-	    !MEMBER_EXISTS("ring_buffer", "aux_pages")) {
d8eb6f
-		fprintf(fp, "[%d] invalid ring_buffer\n", cpu);
d8eb6f
+	if ((STRUCT_EXISTS("ring_buffer") &&
d8eb6f
+	    !MEMBER_EXISTS("ring_buffer", "aux_pages")) ||
d8eb6f
+		(STRUCT_EXISTS("perf_buffer") &&
d8eb6f
+		 !MEMBER_EXISTS("perf_buffer", "aux_pages"))) {
d8eb6f
+		fprintf(fp, "[%d] invalid {ring|perf}_buffer\n", cpu);
d8eb6f
 		return FALSE;
d8eb6f
 	}
d8eb6f
 
d8eb6f
-	/* array of struct pages for pt buffer */
d8eb6f
-	if(!get_member(struct_ring_buffer, "ring_buffer", "aux_pages",
d8eb6f
-		       &aux_pages))
d8eb6f
-		return FALSE;
d8eb6f
+	if (STRUCT_EXISTS("ring_buffer")) {
d8eb6f
+		/* array of struct pages for pt buffer */
d8eb6f
+		if(!get_member(struct_ring_buffer, "ring_buffer", "aux_pages",
d8eb6f
+			       &aux_pages))
d8eb6f
+			return FALSE;
d8eb6f
 
d8eb6f
-	/* number of pages */
d8eb6f
-	if(!get_member(struct_ring_buffer, "ring_buffer", "aux_nr_pages",
d8eb6f
-		       &aux_nr_pages))
d8eb6f
-		return FALSE;
d8eb6f
+		/* number of pages */
d8eb6f
+		if(!get_member(struct_ring_buffer, "ring_buffer", "aux_nr_pages",
d8eb6f
+			       &aux_nr_pages))
d8eb6f
+			return FALSE;
d8eb6f
+
d8eb6f
+		/* private data (struct pt_buffer) */
d8eb6f
+		if(!get_member(struct_ring_buffer, "ring_buffer", "aux_priv",
d8eb6f
+			       &aux_priv))
d8eb6f
+			return FALSE;
d8eb6f
+	} else if (STRUCT_EXISTS("perf_buffer")) {
d8eb6f
+		if(!get_member(struct_ring_buffer, "perf_buffer", "aux_pages",
d8eb6f
+					&aux_pages))
d8eb6f
+			return FALSE;
d8eb6f
 
d8eb6f
-	/* private data (struct pt_buffer) */
d8eb6f
-	if(!get_member(struct_ring_buffer, "ring_buffer", "aux_priv",
d8eb6f
-		       &aux_priv))
d8eb6f
+		if(!get_member(struct_ring_buffer, "perf_buffer", "aux_nr_pages",
d8eb6f
+					&aux_nr_pages))
d8eb6f
+			return FALSE;
d8eb6f
+
d8eb6f
+		if(!get_member(struct_ring_buffer, "perf_buffer", "aux_priv",
d8eb6f
+				&aux_priv))
d8eb6f
+			return FALSE;
d8eb6f
+	} else
d8eb6f
 		return FALSE;
d8eb6f
 
d8eb6f
 	if (!aux_nr_pages) {
d8eb6f
-- 
d8eb6f
2.31.1
d8eb6f