Re: [RFC 1/3] mm/vma: Define a default value for VM_DATA_DEFAULT_FLAGS
On 03/03/2020 10:55 PM, Vlastimil Babka wrote: > On 3/2/20 7:47 AM, Anshuman Khandual wrote: >> There are many platforms with exact same value for VM_DATA_DEFAULT_FLAGS >> This creates a default value for VM_DATA_DEFAULT_FLAGS in line with the >> existing VM_STACK_DEFAULT_FLAGS. While here, also define some more macros >> with standard VMA access flag combinations that are used frequently across >> many platforms. Apart from simplification, this reduces code duplication >> as well. >> >> Cc: Richard Henderson >> Cc: Vineet Gupta >> Cc: Russell King >> Cc: Catalin Marinas >> Cc: Mark Salter >> Cc: Guo Ren >> Cc: Yoshinori Sato >> Cc: Brian Cain >> Cc: Tony Luck >> Cc: Geert Uytterhoeven >> Cc: Michal Simek >> Cc: Ralf Baechle >> Cc: Paul Burton >> Cc: Nick Hu >> Cc: Ley Foon Tan >> Cc: Jonas Bonn >> Cc: "James E.J. Bottomley" >> Cc: Michael Ellerman >> Cc: Paul Walmsley >> Cc: Heiko Carstens >> Cc: Rich Felker >> Cc: "David S. Miller" >> Cc: Guan Xuetao >> Cc: Thomas Gleixner >> Cc: Jeff Dike >> Cc: Chris Zankel >> Cc: Andrew Morton >> Cc: linux-al...@vger.kernel.org >> Cc: linux-ker...@vger.kernel.org >> Cc: linux-snps-...@lists.infradead.org >> Cc: linux-arm-ker...@lists.infradead.org >> Cc: linux-c6x-...@linux-c6x.org >> Cc: uclinux-h8-de...@lists.sourceforge.jp >> Cc: linux-hexa...@vger.kernel.org >> Cc: linux-i...@vger.kernel.org >> Cc: linux-m...@lists.linux-m68k.org >> Cc: linux-m...@vger.kernel.org >> Cc: nios2-...@lists.rocketboards.org >> Cc: openr...@lists.librecores.org >> Cc: linux-par...@vger.kernel.org >> Cc: linuxppc-dev@lists.ozlabs.org >> Cc: linux-ri...@lists.infradead.org >> Cc: linux-s...@vger.kernel.org >> Cc: linux...@vger.kernel.org >> Cc: sparcli...@vger.kernel.org >> Cc: linux...@lists.infradead.org >> Cc: linux-xte...@linux-xtensa.org >> Cc: linux...@kvack.org >> Signed-off-by: Anshuman Khandual Reviewed-by: Vlastimil Babka > > Nit: > >> diff --git a/include/linux/mm.h b/include/linux/mm.h >> index b0e53ef13ff1..7a764ae6ab68 100644 >> --- a/include/linux/mm.h >> +++ b/include/linux/mm.h >> @@ -342,6 +342,21 @@ extern unsigned int kobjsize(const void *objp); >> /* Bits set in the VMA until the stack is in its final location */ >> #define VM_STACK_INCOMPLETE_SETUP (VM_RAND_READ | VM_SEQ_READ) >> >> +#define TASK_EXEC ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) >> + >> +/* Common data flag combinations */ >> +#define VM_DATA_FLAGS_TSK_EXEC (VM_READ | VM_WRITE | TASK_EXEC | \ >> + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) >> +#define VM_DATA_FLAGS_NON_EXEC (VM_READ | VM_WRITE | VM_MAYREAD | \ >> + VM_MAYWRITE | VM_MAYEXEC) >> +#define VM_DATA_FLAGS_EXEC (VM_READ | VM_WRITE | VM_EXEC | \ >> + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) >> + >> +#ifndef VM_DATA_DEFAULT_FLAGS /* arch can override this */ >> +#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ >> + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) > > Should you use VM_DATA_FLAGS_EXEC here? Yeah one more macro to expand, but > it's > right above this. Sure, can do that. > >> +#endif >> + >> #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ >> #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS >> #endif >> > > >
Re: [RFC 1/3] mm/vma: Define a default value for VM_DATA_DEFAULT_FLAGS
On 3/2/20 7:47 AM, Anshuman Khandual wrote: > There are many platforms with exact same value for VM_DATA_DEFAULT_FLAGS > This creates a default value for VM_DATA_DEFAULT_FLAGS in line with the > existing VM_STACK_DEFAULT_FLAGS. While here, also define some more macros > with standard VMA access flag combinations that are used frequently across > many platforms. Apart from simplification, this reduces code duplication > as well. > > Cc: Richard Henderson > Cc: Vineet Gupta > Cc: Russell King > Cc: Catalin Marinas > Cc: Mark Salter > Cc: Guo Ren > Cc: Yoshinori Sato > Cc: Brian Cain > Cc: Tony Luck > Cc: Geert Uytterhoeven > Cc: Michal Simek > Cc: Ralf Baechle > Cc: Paul Burton > Cc: Nick Hu > Cc: Ley Foon Tan > Cc: Jonas Bonn > Cc: "James E.J. Bottomley" > Cc: Michael Ellerman > Cc: Paul Walmsley > Cc: Heiko Carstens > Cc: Rich Felker > Cc: "David S. Miller" > Cc: Guan Xuetao > Cc: Thomas Gleixner > Cc: Jeff Dike > Cc: Chris Zankel > Cc: Andrew Morton > Cc: linux-al...@vger.kernel.org > Cc: linux-ker...@vger.kernel.org > Cc: linux-snps-...@lists.infradead.org > Cc: linux-arm-ker...@lists.infradead.org > Cc: linux-c6x-...@linux-c6x.org > Cc: uclinux-h8-de...@lists.sourceforge.jp > Cc: linux-hexa...@vger.kernel.org > Cc: linux-i...@vger.kernel.org > Cc: linux-m...@lists.linux-m68k.org > Cc: linux-m...@vger.kernel.org > Cc: nios2-...@lists.rocketboards.org > Cc: openr...@lists.librecores.org > Cc: linux-par...@vger.kernel.org > Cc: linuxppc-dev@lists.ozlabs.org > Cc: linux-ri...@lists.infradead.org > Cc: linux-s...@vger.kernel.org > Cc: linux...@vger.kernel.org > Cc: sparcli...@vger.kernel.org > Cc: linux...@lists.infradead.org > Cc: linux-xte...@linux-xtensa.org > Cc: linux...@kvack.org > Signed-off-by: Anshuman Khandual Nit: > diff --git a/include/linux/mm.h b/include/linux/mm.h > index b0e53ef13ff1..7a764ae6ab68 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -342,6 +342,21 @@ extern unsigned int kobjsize(const void *objp); > /* Bits set in the VMA until the stack is in its final location */ > #define VM_STACK_INCOMPLETE_SETUP(VM_RAND_READ | VM_SEQ_READ) > > +#define TASK_EXEC ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) > + > +/* Common data flag combinations */ > +#define VM_DATA_FLAGS_TSK_EXEC (VM_READ | VM_WRITE | TASK_EXEC | \ > + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) > +#define VM_DATA_FLAGS_NON_EXEC (VM_READ | VM_WRITE | VM_MAYREAD | \ > + VM_MAYWRITE | VM_MAYEXEC) > +#define VM_DATA_FLAGS_EXEC (VM_READ | VM_WRITE | VM_EXEC | \ > + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) > + > +#ifndef VM_DATA_DEFAULT_FLAGS/* arch can override this */ > +#define VM_DATA_DEFAULT_FLAGS(VM_READ | VM_WRITE | VM_EXEC | \ > + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) Should you use VM_DATA_FLAGS_EXEC here? Yeah one more macro to expand, but it's right above this. > +#endif > + > #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ > #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS > #endif >
Re: [RFC 1/3] mm/vma: Define a default value for VM_DATA_DEFAULT_FLAGS
On Mon, Mar 2, 2020 at 7:48 AM Anshuman Khandual wrote: > There are many platforms with exact same value for VM_DATA_DEFAULT_FLAGS > This creates a default value for VM_DATA_DEFAULT_FLAGS in line with the > existing VM_STACK_DEFAULT_FLAGS. While here, also define some more macros > with standard VMA access flag combinations that are used frequently across > many platforms. Apart from simplification, this reduces code duplication > as well. > Signed-off-by: Anshuman Khandual > arch/m68k/include/asm/page.h | 3 --- For m68k: Acked-by: Geert Uytterhoeven Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds