On 17/01/2025 23:13, Christoph Lameter (Ampere) wrote: > On Fri, 17 Jan 2025, Kevin Brodsky wrote: > >> index a29457bef626..3b07cdaac3ae 100644 >> --- a/mm/slab_common.c >> +++ b/mm/slab_common.c >> @@ -305,18 +305,6 @@ struct kmem_cache *__kmem_cache_create_args(const char *name, >> goto out_unlock; >> } >> >> - /* Refuse requests with allocator specific flags */ >> - if (flags & ~SLAB_FLAGS_PERMITTED) { >> - err = -EINVAL; >> - goto out_unlock; >> - } > I think we should keep checking for invalid flags. The commit that introduced this check [1] aimed to ensure that no allocator-specific flag is passed to kmem_cache_create(), so it seemed to me it was no longer needed now that allocator-specific flags are gone. Having said that, we could keep it in order to reject flags that are not supposed to be passed to kmem_cache_create() (e.g. SLAB_SKIP_KFENCE). With that approach we'd just need to clear SLAB_DEBUG_FLAGS below if !CONFIG_SLUB_DEBUG (and get rid of CACHE_CREATE_MASK). - Kevin [1] https://lore.kernel.org/all/1478553075-120242-2-git-send-email-thgarnie@xxxxxxxxxx/ >> - /* >> - * Some allocators will constraint the set of valid flags to a subset >> - * of all flags. We expect them to define CACHE_CREATE_MASK in this >> - * case, and we'll just provide them with a sanitized version of the >> - * passed flags. >> - */ >> flags &= CACHE_CREATE_MASK; > This would silently clear some flags instead of creating an error.