Skip to content

Commit

Permalink
scripts/gdb: fix list_for_each
Browse files Browse the repository at this point in the history
If the list is uninitialized (next pointer is NULL), list_for_each gets
stuck in an infinite loop. Print a message and treat list as empty.

Link: https://lkml.kernel.org/r/4ae23bb1-c333-f669-da2d-fa35c4f49018@amazon.com
Signed-off-by: George Prekas <prekageo@amazon.com>
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Kieran Bingham <kbingham@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
George Prekas authored and Linus Torvalds committed Feb 26, 2021
1 parent 3d2fc4c commit db7fbf4
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions scripts/gdb/linux/lists.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ def list_for_each(head):
raise TypeError("Must be struct list_head not {}"
.format(head.type))

if head['next'] == 0:
gdb.write("list_for_each: Uninitialized list '{}' treated as empty\n"
.format(head.address))
return

node = head['next'].dereference()
while node.address != head.address:
yield node.address
Expand Down

0 comments on commit db7fbf4

Please sign in to comment.