diff mbox

[V3,1/3] Use proper size for task_struct->flags

Message ID 1461608888-5063-2-git-send-email-dave.kleikamp@oracle.com
State Not Applicable
Delegated to: David Miller
Headers show

Commit Message

Dave Kleikamp April 25, 2016, 6:28 p.m. UTC
task_struct->flags was once defined as a long, but is currently an int.

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
---
 defs.h |    1 +
 task.c |   12 ++++++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

Comments

Sam Ravnborg April 25, 2016, 8:18 p.m. UTC | #1
On Mon, Apr 25, 2016 at 01:28:06PM -0500, Dave Kleikamp wrote:
> task_struct->flags was once defined as a long, but is currently an int.
> 
> Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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;
 }