From: Michal Hocko <mhocko@xxxxxxxx> Subject: slab: make GFP_SLAB_BUG_MASK information more human readable printk offers %pGg for quite some time so let's use it to get a human readable list of invalid flags. The original output would be [ 429.191962] gfp: 2 after the change [ 429.191962] Unexpected gfp: 0x2 (__GFP_HIGHMEM) Link: http://lkml.kernel.org/r/1465548200-11384-1-git-send-email-mhocko@xxxxxxxxxx Signed-off-by: Michal Hocko <mhocko@xxxxxxxx> Cc: Sergey Senozhatsky <sergey.senozhatsky.work@xxxxxxxxx> Cc: Christoph Lameter <cl@xxxxxxxxx> Cc: Pekka Enberg <penberg@xxxxxxxxxx> Cc: David Rientjes <rientjes@xxxxxxxxxx> Cc: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/slab.c | 3 ++- mm/slub.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff -puN mm/slab.c~slab-make-gfp_slab_bug_mask-information-more-human-readable mm/slab.c --- a/mm/slab.c~slab-make-gfp_slab_bug_mask-information-more-human-readable +++ a/mm/slab.c @@ -2686,7 +2686,8 @@ static struct page *cache_grow_begin(str * critical path in kmem_cache_alloc(). */ if (unlikely(flags & GFP_SLAB_BUG_MASK)) { - pr_emerg("gfp: %u\n", flags & GFP_SLAB_BUG_MASK); + gfp_t invalid_mask = flags & GFP_SLAB_BUG_MASK; + pr_emerg("Unexpected gfp: %#x (%pGg)\n", invalid_mask, &invalid_mask); BUG(); } local_flags = flags & (GFP_CONSTRAINT_MASK|GFP_RECLAIM_MASK); diff -puN mm/slub.c~slab-make-gfp_slab_bug_mask-information-more-human-readable mm/slub.c --- a/mm/slub.c~slab-make-gfp_slab_bug_mask-information-more-human-readable +++ a/mm/slub.c @@ -1612,7 +1612,8 @@ out: static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node) { if (unlikely(flags & GFP_SLAB_BUG_MASK)) { - pr_emerg("gfp: %u\n", flags & GFP_SLAB_BUG_MASK); + gfp_t invalid_mask = flags & GFP_SLAB_BUG_MASK; + pr_emerg("Unexpected gfp: %#x (%pGg)\n", invalid_mask, &invalid_mask); BUG(); } _ -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html