Re: [PATCHv4 1/5] x86/mm: split arch_mmap_rnd() on compat/native versions

From: Thomas Gleixner
Date: Sat Feb 11 2017 - 03:40:03 EST


On Sat, 11 Feb 2017, Dmitry Safonov wrote:

> 2017-02-10 23:10 GMT+03:00 Thomas Gleixner <tglx@xxxxxxxxxxxxx>:
> > On Thu, 9 Feb 2017, Borislav Petkov wrote:
> >> I can't say that I'm thrilled about the ifdeffery this is adding.
> >>
> >> But I can't think of a cleaner approach at a quick glance, though -
> >> that's generic and arch-specific code intertwined muck. Sad face.
> >
> > It's trivial enough to do ....
> >
> > Thanks,
> >
> > tglx
> >
> > ---
> > arch/x86/mm/mmap.c | 22 ++++++++++------------
> > 1 file changed, 10 insertions(+), 12 deletions(-)
> >
> > --- a/arch/x86/mm/mmap.c
> > +++ b/arch/x86/mm/mmap.c
> > @@ -55,6 +55,10 @@ static unsigned long stack_maxrandom_siz
> > #define MIN_GAP (128*1024*1024UL + stack_maxrandom_size())
> > #define MAX_GAP (TASK_SIZE/6*5)
> >
> > +#ifndef CONFIG_COMPAT
> > +# define mmap_rnd_compat_bits mmap_rnd_bits
> > +#endif
> > +
>
> >From my POV, I can't say that it's clearer to shadow mmap_compat_bits
> like that then to have two functions with native/compat names.
> But if you insist, I'll resend patches set with your version.

You can make that

#ifdef CONFIG_64BIT
# define mmap32_rnd_bits mmap_compat_rnd_bits
# define mmap64_rnd_bits mmap_rnd_bits
#else
# define mmap32_rnd_bits mmap_rnd_bits
# define mmap64_rnd_bits mmap_rnd_bits
#endif

and use that. That's still way more readable than the unholy ifdef mess.

Thanks,

tglx