Re: [PATCH] shmem: avoid maybe-uninitialized warning

From: Arnd Bergmann
Date: Mon Oct 24 2016 - 15:43:03 EST


On Monday, October 24, 2016 6:22:44 PM CEST Michal Hocko wrote:
> On Mon 24-10-16 17:25:03, Arnd Bergmann wrote:
> > After enabling -Wmaybe-uninitialized warnings, we get a false-postive
> > warning for shmem:
> >
> > mm/shmem.c: In function âshmem_getpage_gfpâ:
> > include/linux/spinlock.h:332:21: error: âinfoâ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>
> Is this really a false positive? If we goto clear and then
> if (sgp <= SGP_CACHE &&
> ((loff_t)index << PAGE_SHIFT) >= i_size_read(inode)) {
> if (alloced) {
>
> we could really take a spinlock on an unitialized variable. But maybe
> there is something that prevents from that...

I did the patch a few weeks ago (I sent the more important
ones out first) and I think I concluded then that 'alloced'
would be false in that case.

> Anyway the whole shmem_getpage_gfp is really hard to follow due to gotos
> and labels proliferation.

Exactly. Maybe we should mark the patch for -stable backports after all
just to be sure.

Andreas also pointed out on IRC that there is another assignment
that can be removed in the function when the variable is initialized
upfront, so I'll resend anyway.

Arnd