* [RFC 0/4] x86: keep TASK_SIZE in sync with mm->task_size
@ 2016-12-30 15:56 Dmitry Safonov
2016-12-30 15:56 ` [RFC 1/4] mm: remove unused TASK_SIZE_OF() Dmitry Safonov
0 siblings, 1 reply; 7+ messages in thread
From: Dmitry Safonov @ 2016-12-30 15:56 UTC (permalink / raw)
To: linux-kernel
Cc: 0x7f454c46, Dmitry Safonov, Thomas Gleixner, Ingo Molnar,
H. Peter Anvin, Andy Lutomirski, Kirill A . Shutemov, x86,
Catalin Marinas, Will Deacon, Ralf Baechle, James E.J. Bottomley,
Helge Deller, Benjamin Herrenschmidt, Paul Mackerras,
Michael Ellerman, Martin Schwidefsky, Heiko Carstens,
David S. Miller, Peter Zijlstra
At this moment, we have following task_size-related things:
- TASK_SIZE_OF() macro, which is unused;
- current->mm->task_size which is used in half and TASK_SIZE() macro
which is used in the other half of code
- TIF_ADDR32, which is used to detect 32-bit address space and is
x86-specific, where some other arches misused TIF_32BIT
- personality ADDR_LIMIT_32BIT, which is used on arm/alpha
- ADDR_LIMIT_3GB, which is x86-specific and can be used to change
running task's TASK_SIZE 3GB <-> 4GB
This patches set removes unused definition of TASK_SIZE_OF (1),
defines TASK_SIZE macro as current->mm->task_size (3).
I would suggest define TASK_SIZE this way in generic version,
but currently I test it only on x86.
It also frees thread info flag (2) and adds arch_prctl()
on x86_64 to get/set current virtual address space size - as
it's needed by now only for CRIU, hide it under CHECKPOINT_RESTORE
config.
Hope those patches will help to clean task_size-related code
at least a bit (and helps me to restore vaddr limits).
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: x86@kernel.org
Dmitry Safonov (4):
mm: remove unused TASK_SIZE_OF()
x86/thread_info: kill TIF_ADDR32 in favour of ADDR_LIMIT_32BIT
x86/mm: define TASK_SIZE as current->mm->task_size
x86/arch_prctl: add ARCH_{GET,SET}_TASK_SIZE
arch/arm64/include/asm/memory.h | 2 --
arch/mips/include/asm/processor.h | 3 ---
arch/parisc/include/asm/processor.h | 3 +--
arch/powerpc/include/asm/processor.h | 3 +--
arch/s390/include/asm/processor.h | 3 +--
arch/sparc/include/asm/processor_64.h | 3 ---
arch/x86/include/asm/elf.h | 7 +++++--
arch/x86/include/asm/processor.h | 19 +++++++++----------
arch/x86/include/asm/thread_info.h | 4 +---
arch/x86/include/uapi/asm/prctl.h | 3 +++
arch/x86/kernel/process_64.c | 17 +++++++++++++++--
arch/x86/kernel/sys_x86_64.c | 4 ++--
arch/x86/um/asm/segment.h | 2 +-
arch/x86/xen/mmu.c | 4 ++--
fs/exec.c | 17 +++++++++++------
include/linux/sched.h | 4 ----
16 files changed, 52 insertions(+), 46 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 7+ messages in thread* [RFC 1/4] mm: remove unused TASK_SIZE_OF() 2016-12-30 15:56 [RFC 0/4] x86: keep TASK_SIZE in sync with mm->task_size Dmitry Safonov @ 2016-12-30 15:56 ` Dmitry Safonov 2016-12-31 1:36 ` Andy Lutomirski ` (3 more replies) 0 siblings, 4 replies; 7+ messages in thread From: Dmitry Safonov @ 2016-12-30 15:56 UTC (permalink / raw) To: linux-kernel Cc: 0x7f454c46, Dmitry Safonov, Catalin Marinas, Will Deacon, Ralf Baechle, James E.J. Bottomley, Helge Deller, Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, Martin Schwidefsky, Heiko Carstens, David S. Miller, Peter Zijlstra, linux-arm-kernel, linux-mips, linux-parisc, linuxppc-dev, linux-s390, sparclinux, Thomas Gleixner All users of TASK_SIZE_OF(tsk) have migrated to mm->task_size or TASK_SIZE_MAX since: commit d696ca016d57 ("x86/fsgsbase/64: Use TASK_SIZE_MAX for FSBASE/GSBASE upper limits"), commit a06db751c321 ("pagemap: check permissions and capabilities at open time"), Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: "James E.J. Bottomley" <jejb@parisc-linux.org> Cc: Helge Deller <deller@gmx.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Peter Zijlstra <peterz@infradead.org> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-mips@linux-mips.org Cc: linux-parisc@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-s390@vger.kernel.org Cc: sparclinux@vger.kernel.org Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com> --- arch/arm64/include/asm/memory.h | 2 -- arch/mips/include/asm/processor.h | 3 --- arch/parisc/include/asm/processor.h | 3 +-- arch/powerpc/include/asm/processor.h | 3 +-- arch/s390/include/asm/processor.h | 3 +-- arch/sparc/include/asm/processor_64.h | 3 --- arch/x86/include/asm/processor.h | 2 -- include/linux/sched.h | 4 ---- 8 files changed, 3 insertions(+), 20 deletions(-) diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h index bfe632808d77..329bb4fd543c 100644 --- a/arch/arm64/include/asm/memory.h +++ b/arch/arm64/include/asm/memory.h @@ -80,8 +80,6 @@ #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 */ diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h index 95b8c471f572..c2827a5507d4 100644 --- a/arch/mips/include/asm/processor.h +++ b/arch/mips/include/asm/processor.h @@ -73,9 +73,6 @@ extern unsigned int vced_count, vcei_count; #define TASK_SIZE (test_thread_flag(TIF_32BIT_ADDR) ? TASK_SIZE32 : TASK_SIZE64) #define STACK_TOP_MAX TASK_SIZE64 -#define TASK_SIZE_OF(tsk) \ - (test_tsk_thread_flag(tsk, TIF_32BIT_ADDR) ? TASK_SIZE32 : TASK_SIZE64) - #define TASK_IS_32BIT_ADDR test_thread_flag(TIF_32BIT_ADDR) #endif diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h index a3661ee6b060..8b51ddae8e4a 100644 --- a/arch/parisc/include/asm/processor.h +++ b/arch/parisc/include/asm/processor.h @@ -32,8 +32,7 @@ #define HAVE_ARCH_PICK_MMAP_LAYOUT -#define TASK_SIZE_OF(tsk) ((tsk)->thread.task_size) -#define TASK_SIZE TASK_SIZE_OF(current) +#define TASK_SIZE (current->thread.task_size) #define TASK_UNMAPPED_BASE (current->thread.map_base) #define DEFAULT_TASK_SIZE32 (0xFFF00000UL) diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h index 1ba814436c73..04e575ead590 100644 --- a/arch/powerpc/include/asm/processor.h +++ b/arch/powerpc/include/asm/processor.h @@ -111,9 +111,8 @@ void release_thread(struct task_struct *); */ #define TASK_SIZE_USER32 (0x0000000100000000UL - (1*PAGE_SIZE)) -#define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk, TIF_32BIT) ? \ +#define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \ TASK_SIZE_USER32 : TASK_SIZE_USER64) -#define TASK_SIZE TASK_SIZE_OF(current) /* This decides where the kernel will search for a free chunk of vm * space during mmap's. diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h index 6bca916a5ba0..c53e8e2a51ac 100644 --- a/arch/s390/include/asm/processor.h +++ b/arch/s390/include/asm/processor.h @@ -89,10 +89,9 @@ extern void execve_tail(void); * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit. */ -#define TASK_SIZE_OF(tsk) ((tsk)->mm->context.asce_limit) #define TASK_UNMAPPED_BASE (test_thread_flag(TIF_31BIT) ? \ (1UL << 30) : (1UL << 41)) -#define TASK_SIZE TASK_SIZE_OF(current) +#define TASK_SIZE (current->mm->context.asce_limit) #define TASK_MAX_SIZE (1UL << 53) #define STACK_TOP (1UL << (test_thread_flag(TIF_31BIT) ? 31:42)) diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h index 6448cfc8292f..6ce1a75d7a24 100644 --- a/arch/sparc/include/asm/processor_64.h +++ b/arch/sparc/include/asm/processor_64.h @@ -36,9 +36,6 @@ #define VPTE_SIZE (1 << (VA_BITS - PAGE_SHIFT + 3)) #endif -#define TASK_SIZE_OF(tsk) \ - (test_tsk_thread_flag(tsk,TIF_32BIT) ? \ - (1UL << 32UL) : ((unsigned long)-VPTE_SIZE)) #define TASK_SIZE \ (test_thread_flag(TIF_32BIT) ? \ (1UL << 32UL) : ((unsigned long)-VPTE_SIZE)) diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index eaf100508c36..090a860b792a 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -819,8 +819,6 @@ static inline void spin_lock_prefetch(const void *x) #define TASK_SIZE (test_thread_flag(TIF_ADDR32) ? \ IA32_PAGE_OFFSET : TASK_SIZE_MAX) -#define TASK_SIZE_OF(child) ((test_tsk_thread_flag(child, TIF_ADDR32)) ? \ - IA32_PAGE_OFFSET : TASK_SIZE_MAX) #define STACK_TOP TASK_SIZE #define STACK_TOP_MAX TASK_SIZE_MAX diff --git a/include/linux/sched.h b/include/linux/sched.h index 4d1905245c7a..7a2e2f3f38a3 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -3610,10 +3610,6 @@ static inline void inc_syscw(struct task_struct *tsk) } #endif -#ifndef TASK_SIZE_OF -#define TASK_SIZE_OF(tsk) TASK_SIZE -#endif - #ifdef CONFIG_MEMCG extern void mm_update_next_owner(struct mm_struct *mm); #else -- 2.11.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [RFC 1/4] mm: remove unused TASK_SIZE_OF() 2016-12-30 15:56 ` [RFC 1/4] mm: remove unused TASK_SIZE_OF() Dmitry Safonov @ 2016-12-31 1:36 ` Andy Lutomirski 2017-01-02 6:57 ` Heiko Carstens ` (2 subsequent siblings) 3 siblings, 0 replies; 7+ messages in thread From: Andy Lutomirski @ 2016-12-31 1:36 UTC (permalink / raw) To: Dmitry Safonov Cc: linux-kernel@vger.kernel.org, Dmitry Safonov, Catalin Marinas, Will Deacon, Ralf Baechle, James E.J. Bottomley, Helge Deller, Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, Martin Schwidefsky, Heiko Carstens, David S. Miller, Peter Zijlstra, linux-arm-kernel@lists.infradead.org, Linux MIPS Mailing List, linux-parisc, l On Fri, Dec 30, 2016 at 7:56 AM, Dmitry Safonov <dsafonov@virtuozzo.com> wrote: > All users of TASK_SIZE_OF(tsk) have migrated to mm->task_size or > TASK_SIZE_MAX since: > commit d696ca016d57 ("x86/fsgsbase/64: Use TASK_SIZE_MAX for > FSBASE/GSBASE upper limits"), > commit a06db751c321 ("pagemap: check permissions and capabilities at > open time"), I like this. Reviewed-by: Andy Lutomirski <luto@kernel.org> # for x86 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC 1/4] mm: remove unused TASK_SIZE_OF() 2016-12-30 15:56 ` [RFC 1/4] mm: remove unused TASK_SIZE_OF() Dmitry Safonov 2016-12-31 1:36 ` Andy Lutomirski @ 2017-01-02 6:57 ` Heiko Carstens 2017-01-02 9:53 ` Kirill A. Shutemov 2017-01-05 9:51 ` David Laight 3 siblings, 0 replies; 7+ messages in thread From: Heiko Carstens @ 2017-01-02 6:57 UTC (permalink / raw) To: Dmitry Safonov Cc: linux-kernel, 0x7f454c46, Catalin Marinas, Will Deacon, Ralf Baechle, James E.J. Bottomley, Helge Deller, Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, Martin Schwidefsky, David S. Miller, Peter Zijlstra, linux-arm-kernel, linux-mips, linux-parisc, linuxppc-dev, linux-s390, sparclinux, Thomas Gleixner, Ingo Molnar, "H. Peter Anvi On Fri, Dec 30, 2016 at 06:56:31PM +0300, Dmitry Safonov wrote: > All users of TASK_SIZE_OF(tsk) have migrated to mm->task_size or > TASK_SIZE_MAX since: > commit d696ca016d57 ("x86/fsgsbase/64: Use TASK_SIZE_MAX for > FSBASE/GSBASE upper limits"), > commit a06db751c321 ("pagemap: check permissions and capabilities at > open time"), > > Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com> > --- ... > diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h > index 6bca916a5ba0..c53e8e2a51ac 100644 > --- a/arch/s390/include/asm/processor.h > +++ b/arch/s390/include/asm/processor.h > @@ -89,10 +89,9 @@ extern void execve_tail(void); > * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit. > */ > > -#define TASK_SIZE_OF(tsk) ((tsk)->mm->context.asce_limit) > #define TASK_UNMAPPED_BASE (test_thread_flag(TIF_31BIT) ? \ > (1UL << 30) : (1UL << 41)) > -#define TASK_SIZE TASK_SIZE_OF(current) > +#define TASK_SIZE (current->mm->context.asce_limit) > #define TASK_MAX_SIZE (1UL << 53) > > #define STACK_TOP (1UL << (test_thread_flag(TIF_31BIT) ? 31:42)) FWIW, for the s390 part: Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC 1/4] mm: remove unused TASK_SIZE_OF() 2016-12-30 15:56 ` [RFC 1/4] mm: remove unused TASK_SIZE_OF() Dmitry Safonov 2016-12-31 1:36 ` Andy Lutomirski 2017-01-02 6:57 ` Heiko Carstens @ 2017-01-02 9:53 ` Kirill A. Shutemov 2017-01-05 9:51 ` David Laight 3 siblings, 0 replies; 7+ messages in thread From: Kirill A. Shutemov @ 2017-01-02 9:53 UTC (permalink / raw) To: Dmitry Safonov Cc: linux-kernel, 0x7f454c46, Catalin Marinas, Will Deacon, Ralf Baechle, James E.J. Bottomley, Helge Deller, Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, Martin Schwidefsky, Heiko Carstens, David S. Miller, Peter Zijlstra, linux-arm-kernel, linux-mips, linux-parisc, linuxppc-dev, linux-s390, sparclinux, Thomas Gleixner, In On Fri, Dec 30, 2016 at 06:56:31PM +0300, Dmitry Safonov wrote: > All users of TASK_SIZE_OF(tsk) have migrated to mm->task_size or > TASK_SIZE_MAX since: > commit d696ca016d57 ("x86/fsgsbase/64: Use TASK_SIZE_MAX for > FSBASE/GSBASE upper limits"), > commit a06db751c321 ("pagemap: check permissions and capabilities at > open time"), > > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will.deacon@arm.com> > Cc: Ralf Baechle <ralf@linux-mips.org> > Cc: "James E.J. Bottomley" <jejb@parisc-linux.org> > Cc: Helge Deller <deller@gmx.de> > Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> > Cc: Paul Mackerras <paulus@samba.org> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> > Cc: Heiko Carstens <heiko.carstens@de.ibm.com> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-mips@linux-mips.org > Cc: linux-parisc@vger.kernel.org > Cc: linuxppc-dev@lists.ozlabs.org > Cc: linux-s390@vger.kernel.org > Cc: sparclinux@vger.kernel.org > Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com> I've noticed this too. Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> -- Kirill A. Shutemov ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [RFC 1/4] mm: remove unused TASK_SIZE_OF() 2016-12-30 15:56 ` [RFC 1/4] mm: remove unused TASK_SIZE_OF() Dmitry Safonov ` (2 preceding siblings ...) 2017-01-02 9:53 ` Kirill A. Shutemov @ 2017-01-05 9:51 ` David Laight 2017-01-05 17:54 ` Andy Lutomirski 3 siblings, 1 reply; 7+ messages in thread From: David Laight @ 2017-01-05 9:51 UTC (permalink / raw) To: 'Dmitry Safonov', linux-kernel@vger.kernel.org Cc: linux-mips@linux-mips.org, Peter Zijlstra, Catalin Marinas, Will Deacon, Paul Mackerras, H. Peter Anvin, sparclinux@vger.kernel.org, linux-s390@vger.kernel.org, 0x7f454c46@gmail.com, Helge Deller, x86@kernel.org, James E.J. Bottomley, Ingo Molnar, Heiko Carstens, Andy Lutomirski, Thomas Gleixner, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, Ralf Baechle, Martin Schwidefsky From: Dmitry Safonov > Sent: 30 December 2016 15:57 > All users of TASK_SIZE_OF(tsk) have migrated to mm->task_size or > TASK_SIZE_MAX since: > commit d696ca016d57 ("x86/fsgsbase/64: Use TASK_SIZE_MAX for > FSBASE/GSBASE upper limits"), > commit a06db751c321 ("pagemap: check permissions and capabilities at > open time"), ... > +#define TASK_SIZE (current->thread.task_size) I'm not sure I like he hidden 'current' argument to an apparent constant. David ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC 1/4] mm: remove unused TASK_SIZE_OF() 2017-01-05 9:51 ` David Laight @ 2017-01-05 17:54 ` Andy Lutomirski 0 siblings, 0 replies; 7+ messages in thread From: Andy Lutomirski @ 2017-01-05 17:54 UTC (permalink / raw) To: David Laight Cc: linux-mips@linux-mips.org, Peter Zijlstra, Catalin Marinas, Heiko Carstens, Paul Mackerras, H. Peter Anvin, sparclinux@vger.kernel.org, linux-s390@vger.kernel.org, 0x7f454c46@gmail.com, Helge Deller, x86@kernel.org, James E.J. Bottomley, Ingo Molnar, Will Deacon, Andy Lutomirski, Thomas Gleixner, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, Dmitry Safonov, "linux-kernel@vger.kernel.or On Thu, Jan 5, 2017 at 1:51 AM, David Laight <David.Laight@aculab.com> wrote: > From: Dmitry Safonov >> Sent: 30 December 2016 15:57 >> All users of TASK_SIZE_OF(tsk) have migrated to mm->task_size or >> TASK_SIZE_MAX since: >> commit d696ca016d57 ("x86/fsgsbase/64: Use TASK_SIZE_MAX for >> FSBASE/GSBASE upper limits"), >> commit a06db751c321 ("pagemap: check permissions and capabilities at >> open time"), > ... >> +#define TASK_SIZE (current->thread.task_size) > > I'm not sure I like he hidden 'current' argument to an > apparent constant. Me neither. But this patch is merely changing the implementation. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-01-05 17:54 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-12-30 15:56 [RFC 0/4] x86: keep TASK_SIZE in sync with mm->task_size Dmitry Safonov 2016-12-30 15:56 ` [RFC 1/4] mm: remove unused TASK_SIZE_OF() Dmitry Safonov 2016-12-31 1:36 ` Andy Lutomirski 2017-01-02 6:57 ` Heiko Carstens 2017-01-02 9:53 ` Kirill A. Shutemov 2017-01-05 9:51 ` David Laight 2017-01-05 17:54 ` Andy Lutomirski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox