The quilt patch titled Subject: scripts/gdb/tasks: fix lx-ps command error has been removed from the -mm tree. Its filename was scripts-gdb-tasks-fix-lx-ps-command-error.patch This patch was dropped because it was merged into the mm-hotfixes-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm ------------------------------------------------------ From: Kuan-Ying Lee <Kuan-Ying.Lee@xxxxxxxxxxxx> Subject: scripts/gdb/tasks: fix lx-ps command error Date: Mon, 27 Nov 2023 15:04:01 +0800 Since commit 8e1f385104ac ("kill task_struct->thread_group") remove the thread_group, we will encounter below issue. (gdb) lx-ps TASK PID COMM 0xffff800086503340 0 swapper/0 Python Exception <class 'gdb.error'>: There is no member named thread_group. Error occurred in Python: There is no member named thread_group. We use signal->thread_head to iterate all threads instead. [Kuan-Ying.Lee@xxxxxxxxxxxx: v2] Link: https://lkml.kernel.org/r/20231129065142.13375-2-Kuan-Ying.Lee@xxxxxxxxxxxx Link: https://lkml.kernel.org/r/20231127070404.4192-2-Kuan-Ying.Lee@xxxxxxxxxxxx Fixes: 8e1f385104ac ("kill task_struct->thread_group") Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@xxxxxxxxxxxx> Acked-by: Oleg Nesterov <oleg@xxxxxxxxxx> Tested-by: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx> Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx> Cc: Chinwen Chang <chinwen.chang@xxxxxxxxxxxx> Cc: Kuan-Ying Lee <Kuan-Ying.Lee@xxxxxxxxxxxx> Cc: Matthias Brugger <matthias.bgg@xxxxxxxxx> Cc: Qun-Wei Lin <qun-wei.lin@xxxxxxxxxxxx> Cc: Andrey Konovalov <andreyknvl@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- scripts/gdb/linux/tasks.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) --- a/scripts/gdb/linux/tasks.py~scripts-gdb-tasks-fix-lx-ps-command-error +++ a/scripts/gdb/linux/tasks.py @@ -13,7 +13,7 @@ import gdb -from linux import utils +from linux import utils, lists task_type = utils.CachedType("struct task_struct") @@ -22,19 +22,15 @@ task_type = utils.CachedType("struct tas def task_lists(): task_ptr_type = task_type.get_type().pointer() init_task = gdb.parse_and_eval("init_task").address - t = g = init_task + t = init_task while True: - while True: - yield t + thread_head = t['signal']['thread_head'] + for thread in lists.list_for_each_entry(thread_head, task_ptr_type, 'thread_node'): + yield thread - t = utils.container_of(t['thread_group']['next'], - task_ptr_type, "thread_group") - if t == g: - break - - t = g = utils.container_of(g['tasks']['next'], - task_ptr_type, "tasks") + t = utils.container_of(t['tasks']['next'], + task_ptr_type, "tasks") if t == init_task: return _ Patches currently in -mm which might be from Kuan-Ying.Lee@xxxxxxxxxxxx are scripts-gdb-stackdepot-rename-pool_index-to-pools_num.patch scripts-gdb-remove-exception-handling-and-refine-print-format.patch