Re: [PATCH] vt: keyboard, fix uninitialized variables warning

From: Andy Shevchenko
Date: Wed Mar 03 2021 - 10:46:42 EST


On Wed, Mar 03, 2021 at 08:39:09AM +0100, Greg KH wrote:
> On Wed, Mar 03, 2021 at 03:33:23PM +0800, Wang, Li wrote:
> > On 3/3/2021 3:14 PM, Greg KH wrote:
> > > On Wed, Mar 03, 2021 at 12:59:32PM +0800, Li Wang wrote:
> > > > drivers/tty/vt/keyboard.c: In function 'vt_do_kdgkb_ioctl':
> > > > drivers/tty/vt/keyboard.c: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized]
> > > > return ret;
> > > > ^~~
> > > > kernel-source/drivers/tty/vt/keyboard.c: warning: 'kbs' may be used uninitialized in this function [-Wmaybe-uninitialized]
> > > > kfree(kbs);
> > > > ^~~~~~~~~~
> > > >
> > > > Signed-off-by: Li Wang <li.wang@xxxxxxxxxxxxx>
> > > > ---
> > > > drivers/tty/vt/keyboard.c | 4 ++--
> > > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
> > > > index 7763862..3e73d55 100644
> > > > --- a/drivers/tty/vt/keyboard.c
> > > > +++ b/drivers/tty/vt/keyboard.c
> > > > @@ -2049,8 +2049,8 @@ int vt_do_kdgkb_ioctl(int cmd, struct kbsentry __user *user_kdgkb, int perm)
> > > > {
> > > > unsigned char kb_func;
> > > > unsigned long flags;
> > > > - char *kbs;
> > > > - int ret;
> > > > + char *kbs = NULL;
> > > > + int ret = -EINVAL;
> > > > if (get_user(kb_func, &user_kdgkb->kb_func))
> > > > return -EFAULT;
> > > What compiler is providing these "warnings"?
> > >
> > > Turns out it is impossible to hit, so this isn't actually fixing
> > > anything...
> >
> > I tested it with gcc 8.2 for arm
> >
> > for runtime codes view, indeed it is impossible to hit.
> >
> > but for compiler view, gcc should give 'used uninitialized' warning, too.
>
> Odd that no other compiler version does this right now, perhaps upgrade
> to a newer version of gcc? 8.2 is really old :(

But it's still supported. I think I can see why. We have a switch case without
default, and probably that's how it makes that happen. So, the proper fix is to
add default section AFAICT.

--
With Best Regards,
Andy Shevchenko