task_struct->flags was once defined as a long, but is currently an int. Signed-off-by: Dave Kleikamp <dave.kleikamp@xxxxxxxxxx> --- defs.h | 1 + task.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/defs.h b/defs.h index d1b49d0..e3afc58 100644 --- a/defs.h +++ b/defs.h @@ -2093,6 +2093,7 @@ struct size_table { /* stash of commonly-used sizes */ long hrtimer_base; long tnt; long trace_print_flags; + long task_struct_flags; }; struct array_table { diff --git a/task.c b/task.c index 7b01951..0743993 100644 --- a/task.c +++ b/task.c @@ -249,6 +249,7 @@ task_init(void) MEMBER_OFFSET_INIT(task_struct_active_mm, "task_struct", "active_mm"); MEMBER_OFFSET_INIT(task_struct_next_run, "task_struct", "next_run"); MEMBER_OFFSET_INIT(task_struct_flags, "task_struct", "flags"); + MEMBER_SIZE_INIT(task_struct_flags, "task_struct", "flags"); MEMBER_OFFSET_INIT(task_struct_pidhash_next, "task_struct", "pidhash_next"); MEMBER_OFFSET_INIT(task_struct_pgrp, "task_struct", "pgrp"); @@ -5266,8 +5267,15 @@ task_flags(ulong task) fill_task_struct(task); - flags = tt->last_task_read ? - ULONG(tt->task_struct + OFFSET(task_struct_flags)) : 0; + if (tt->last_task_read) { + if (SIZE(task_struct_flags) == sizeof(unsigned int)) + flags = UINT(tt->task_struct + + OFFSET(task_struct_flags)); + else + flags = ULONG(tt->task_struct + + OFFSET(task_struct_flags)); + } else + flags = 0; return flags; } -- 1.7.1 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility