ARM64: implement TASK_SIZE_OF
Subsystems (2)
PATCH 1/1 ARM64: implement TASK_SIZE_OF
include/linux/sched.h implements TASK_SIZE_OF as TASK_SIZE if it is not set by the architecture headers. TASK_SIZE uses the current task to determine the size of the virtual address space. On a 64-bit kernel this will cause reading /proc/pid/pagemap of a 64-bit process from a 32-bit process to return EOF when it reads past 0xffffffff.
Implement TASK_SIZE_OF exactly the same as TASK_SIZE with test_tsk_thread_flag instead of test_thread_flag.
--- arch/arm64/include/asm/memory.h | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/include/asm/memory.h +2 -0
@@ -56,6 +56,8 @@#define TASK_SIZE_32 UL(0x100000000)#define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \ TASK_SIZE_32 : TASK_SIZE_64) +#define TASK_SIZE_OF (tsk) (test_tsk_thread_flag(tsk, TIF_32BIT) ? \ + TASK_SIZE_32 : TASK_SIZE_64)#else #define TASK_SIZE TASK_SIZE_64#endif /* CONFIG_COMPAT */
Signature · 1 line
2.0.0.526.g5318336
Hi Colin,
Quoted 9 lines · Colin Cross
include/linux/sched.himplementsTASK_SIZE_OFasTASK_SIZEif it is not set by the architecture headers.TASK_SIZEuses the current task to determine the size of the virtual address space. On a 64-bit kernel this will cause reading/proc/pid/pagemapof a 64-bit process from a 32-bit process to return EOF when it reads past0xffffffff.Implement
TASK_SIZE_OFexactly the same asTASK_SIZEwithtest_tsk_thread_flaginstead oftest_thread_flag.
Looks sane to me.
I take it you're being bitten by this in real software, hence the CC stable tag?
Will
Quoted 13 lines · Will Deacon
Hi Colin,
Quoted 9 lines · Colin Cross
include/linux/sched.himplementsTASK_SIZE_OFasTASK_SIZEif it is not set by the architecture headers.TASK_SIZEuses the current task to determine the size of the virtual address space. On a 64-bit kernel this will cause reading/proc/pid/pagemapof a 64-bit process from a 32-bit process to return EOF when it reads past0xffffffff.Implement
TASK_SIZE_OFexactly the same asTASK_SIZEwithtest_tsk_thread_flaginstead oftest_thread_flag.
Quoted 8 lines
Looks sane to me.
Acked-by Will Deacon <[email protected]>I take it you're being bitten by this in real software, hence the CC stable tag?
Will
Yes, it causes memory statistics produced by Android's procrank tool to be completely wrong. It applies cleanly to at least 3.10.44, 3.12.22, and 3.14.8.
Catalin Marinas
maintainerQuoted 7 lines · Colin Cross
include/linux/sched.himplementsTASK_SIZE_OFasTASK_SIZEif it is not set by the architecture headers.TASK_SIZEuses the current task to determine the size of the virtual address space. On a 64-bit kernel this will cause reading/proc/pid/pagemapof a 64-bit process from a 32-bit process to return EOF when it reads past0xffffffff.
Quoted 5 lines
Implement
TASK_SIZE_OFexactly the same asTASK_SIZEwithtest_tsk_thread_flaginstead oftest_thread_flag.Cc stable at vger.kernel.orgSigned-off-by Colin Cross <[email protected]>
Thanks. Applied.
Signature · 1 line
Catalin