On Wed, 1 Jul 2020, Long Li wrote:

> diff --git a/mm/slab.c b/mm/slab.c
> index ac7a223d9ac3..2850fe3c5fb8 100644
> --- a/mm/slab.c
> +++ b/mm/slab.c
> @@ -2573,13 +2573,9 @@ static struct page *cache_grow_begin(struct kmem_cache 
> *cachep,
>        * Be lazy and only check for valid flags here,  keeping it out of the
>        * critical path in kmem_cache_alloc().
>        */
> -     if (unlikely(flags & GFP_SLAB_BUG_MASK)) {
> -             gfp_t invalid_mask = flags & GFP_SLAB_BUG_MASK;
> -             flags &= ~GFP_SLAB_BUG_MASK;
> -             pr_warn("Unexpected gfp: %#x (%pGg). Fixing up to gfp: %#x 
> (%pGg). Fix your code!\n",
> -                             invalid_mask, &invalid_mask, flags, &flags);
> -             dump_stack();
> -     }
> +     if (unlikely(flags & GFP_SLAB_BUG_MASK))
> +             flags = kmalloc_invalid_flags(flags);
> +
>       WARN_ON_ONCE(cachep->ctor && (flags & __GFP_ZERO));
>       local_flags = flags & (GFP_CONSTRAINT_MASK|GFP_RECLAIM_MASK);
>  

Is this name correct?  kmalloc_invalid_flags() masks off the invalid flags 
and returns the valid flags :)  Maybe kmalloc_check_flags()?

Reply via email to