> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c > index 0c9e392..3ddddc7 100644 > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c > @@ -679,6 +679,7 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma) > [ilog2(VM_PKEY_BIT1)] = "", > [ilog2(VM_PKEY_BIT2)] = "", > [ilog2(VM_PKEY_BIT3)] = "", > + [ilog2(VM_PKEY_BIT4)] = "", > #endif /* CONFIG_ARCH_HAS_PKEYS */ ... > +#if defined(CONFIG_PPC) > +# define VM_PKEY_BIT4 VM_HIGH_ARCH_4 > +#else > +# define VM_PKEY_BIT4 0 > +#endif > #endif /* CONFIG_ARCH_HAS_PKEYS */ That new line boils down to: [ilog2(0)] = "", on x86. It wasn't *obvious* to me that it is OK to do that. The other possibly undefined bits (VM_SOFTDIRTY for instance) #ifdef themselves out of this array. I would just be a wee bit worried that this would overwrite the 0 entry ("??") with "".