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

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