[Crash-utility] [PATCH 4/6] do_list_no_hash: factor out a small readmem function

Dave Wysochanski dwysocha at redhat.com
Tue Jul 10 22:24:37 UTC 2018


Later we will need to call readmem with more than one address variable.
For clarity and simplicity, factor out the function.

Signed-off-by: Dave Wysochanski <dwysocha at redhat.com>
---
 tools.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/tools.c b/tools.c
index f9bf56f..0d4b8e5 100644
--- a/tools.c
+++ b/tools.c
@@ -3938,6 +3938,17 @@ static void do_list_output_struct(struct list_data *ld, ulong next, ulong offset
 	}
 }
 
+static int do_list_no_hash_readmem(struct list_data *ld, ulong *next_ptr,
+				   ulong readflag)
+{
+	if (!readmem(*next_ptr + ld->member_offset, KVADDR, next_ptr,
+		     sizeof(void *), "list entry", readflag)) {
+		error(INFO, "\ninvalid list entry: %lx\n", *next_ptr);
+		return -1;
+	}
+	return 0;
+}
+
 /*
  * Similar to do_list() but without the hash_table or LIST_ALLOCATE.
  * Useful for the 'list' command and other callers needing faster list
@@ -3948,7 +3959,7 @@ do_list_no_hash(struct list_data *ld)
 {
 	ulong next, last, first, offset;
 	ulong searchfor, readflag;
-	int i, count;
+	int i, count, ret;
 	unsigned int radix;
 	struct req_entry **e = NULL;
 
@@ -4015,11 +4026,9 @@ do_list_no_hash(struct list_data *ld)
 		    ld->callback_data) && (ld->flags & CALLBACK_RETURN))
 			break;
 
-                if (!readmem(next + ld->member_offset, KVADDR, &next,
-		    sizeof(void *), "list entry", readflag)) {
-			error(INFO, "\ninvalid list entry: %lx\n", next);
+		ret = do_list_no_hash_readmem(ld, &next, readflag);
+		if (ret == -1)
 			return -1;
-		}
 
 		if (next == 0) {
 			if (ld->flags & LIST_HEAD_FORMAT) {
-- 
1.8.3.1




More information about the Crash-utility mailing list