On Sat, 5 Oct 2024 02:42:12 +0530 Brahmajit <brahmajit.xyz@xxxxxxxxx> wrote: > With Andrew's suggestion I came up with something like this, would love > some feedback. > > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c > @@ -909,8 +909,15 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma) > { > /* > * Don't forget to update Documentation/ on changes. > + * > + * The length of the second argument of mnemonics[] > + * needs to be 3 instead of previously set 2 > + * (i.e. from [BITS_PER_LONG][2] to [BITS_PER_LONG][3]) > + * to avoid spurious > + * -Werror=unterminated-string-initialization warning > + * with GCC 15 > */ > - static const char mnemonics[BITS_PER_LONG][2] = { > + static const char mnemonics[BITS_PER_LONG][3] = { > /* > * In case if we meet a flag we don't know about. > */ > @@ -985,13 +992,10 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma) > > seq_puts(m, "VmFlags: "); > for (i = 0; i < BITS_PER_LONG; i++) { > - if (!mnemonics[i][0]) > + if (strcmp(mnemonics[i], "") == 0) > continue; lgtm, except this change isn't needed - testing the 0th char for NULL is a common idiom. > - if (vma->vm_flags & (1UL << i)) { > - seq_putc(m, mnemonics[i][0]); > - seq_putc(m, mnemonics[i][1]); > - seq_putc(m, ' '); > - } > + if (vma->vm_flags & (1UL << i)) > + seq_printf(m, "%s ", mnemonics[i]); > } > seq_putc(m, '\n'); > }