提交 c5389831 编写于 作者: D David S. Miller

sparc: Fix user_addr_max() definition.

We need to use TASK_SIZE because for 64-bit tasks the value
of STACK_TOP actually sits in the middle of the address space
so we'll get false-negatives.

Adjust the TASK_SIZE definition on sparc64 to accomodate this,
in the context in which user_addr_max() is used we have the
test_thread_flag() definition available but not the one for
test_tsk_thread_flag().
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 2922585b
...@@ -42,7 +42,9 @@ ...@@ -42,7 +42,9 @@
#define TASK_SIZE_OF(tsk) \ #define TASK_SIZE_OF(tsk) \
(test_tsk_thread_flag(tsk,TIF_32BIT) ? \ (test_tsk_thread_flag(tsk,TIF_32BIT) ? \
(1UL << 32UL) : ((unsigned long)-VPTE_SIZE)) (1UL << 32UL) : ((unsigned long)-VPTE_SIZE))
#define TASK_SIZE TASK_SIZE_OF(current) #define TASK_SIZE \
(test_thread_flag(TIF_32BIT) ? \
(1UL << 32UL) : ((unsigned long)-VPTE_SIZE))
#ifdef __KERNEL__ #ifdef __KERNEL__
#define STACK_TOP32 ((1UL << 32UL) - PAGE_SIZE) #define STACK_TOP32 ((1UL << 32UL) - PAGE_SIZE)
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#endif #endif
#define user_addr_max() \ #define user_addr_max() \
(segment_eq(get_fs(), USER_DS) ? STACK_TOP : ~0UL) (segment_eq(get_fs(), USER_DS) ? TASK_SIZE : ~0UL)
extern long strncpy_from_user(char *dest, const char __user *src, long count); extern long strncpy_from_user(char *dest, const char __user *src, long count);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册