mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
scripts/gdb: fix list_for_each
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>
This commit is contained in:
committed by
Linus Torvalds
parent
3d2fc4c082
commit
db7fbf492d
@@ -27,6 +27,11 @@ def list_for_each(head):
|
|||||||
raise TypeError("Must be struct list_head not {}"
|
raise TypeError("Must be struct list_head not {}"
|
||||||
.format(head.type))
|
.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()
|
node = head['next'].dereference()
|
||||||
while node.address != head.address:
|
while node.address != head.address:
|
||||||
yield node.address
|
yield node.address
|
||||||
|
Reference in New Issue
Block a user