Re: [PATCH 11/16] mm: consolidate the get_user_pages* implementations

From: Jason Gunthorpe
Date: Tue Jun 25 2019 - 07:56:18 EST


On Tue, Jun 25, 2019 at 09:56:50AM +0200, Christoph Hellwig wrote:
> On Fri, Jun 21, 2019 at 11:41:31AM -0300, Jason Gunthorpe wrote:
> > > static bool gup_fast_permitted(unsigned long start, unsigned long end)
> > > {
> > > - return true;
> > > + return IS_ENABLED(CONFIG_HAVE_FAST_GUP) ? true : false;
> >
> > The ?: is needed with IS_ENABLED?
>
> It shouldn't, I'll fix it up.
>
> > I'd suggest to revise this block a tiny bit:
> >
> > -#ifndef gup_fast_permitted
> > +#if !IS_ENABLED(CONFIG_HAVE_FAST_GUP) || !defined(gup_fast_permitted)
> > /*
> > * Check if it's allowed to use __get_user_pages_fast() for the range, or
> > * we need to fall back to the slow version:
> > */
> > -bool gup_fast_permitted(unsigned long start, int nr_pages)
> > +static bool gup_fast_permitted(unsigned long start, int nr_pages)
> > {
> >
> > Just in case some future arch code mismatches the header and kconfig..
>
> IS_ENABLED outside a function doesn't really make sense. But I'll
> just life the IS_ENABLED(CONFIG_HAVE_FAST_GUP) checks into the two
> callers.

I often see '#if IS_ENABLED(CONFIG_X)', IIRC last I looked at that, it
was needed because the usual #ifdef CONFIG_X didn't work if the value
was =m?

Would be interested to know if that is not the right way to use
kconfig

Jason