From 7702ba43cc24d3039afab73e69d5ca2e20964beb Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Wed, 23 Jul 2008 21:26:53 -0700 Subject: [PATCH] --- yaml --- r: 105260 b: refs/heads/master c: 8b05c7e6e159d2f33c9275281b8b909a89eb7c5d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/sched.h | 7 +++++++ trunk/lib/debugobjects.c | 4 +--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 881b9a77398d..c09d42f9d016 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 68ad8df42e12037c3894c9706ab428bf5cd6426b +refs/heads/master: 8b05c7e6e159d2f33c9275281b8b909a89eb7c5d diff --git a/trunk/include/linux/sched.h b/trunk/include/linux/sched.h index dc7e592c473a..6aca4a16e377 100644 --- a/trunk/include/linux/sched.h +++ b/trunk/include/linux/sched.h @@ -1983,6 +1983,13 @@ static inline unsigned long *end_of_stack(struct task_struct *p) #endif +static inline int object_is_on_stack(void *obj) +{ + void *stack = task_stack_page(current); + + return (obj >= stack) && (obj < (stack + THREAD_SIZE)); +} + extern void thread_info_cache_init(void); /* set thread flags in other task's structures diff --git a/trunk/lib/debugobjects.c b/trunk/lib/debugobjects.c index 85b18d79be89..f86196390cfd 100644 --- a/trunk/lib/debugobjects.c +++ b/trunk/lib/debugobjects.c @@ -226,15 +226,13 @@ debug_object_fixup(int (*fixup)(void *addr, enum debug_obj_state state), static void debug_object_is_on_stack(void *addr, int onstack) { - void *stack = current->stack; int is_on_stack; static int limit; if (limit > 4) return; - is_on_stack = (addr >= stack && addr < (stack + THREAD_SIZE)); - + is_on_stack = object_is_on_stack(addr); if (is_on_stack == onstack) return;