Re: [linux-stable-rc:linux-4.9.y 967/2229] drivers/staging/android/ion/ion-ioctl.c:71:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is false

From: Greg Kroah-Hartman
Date: Wed Jul 27 2022 - 06:08:38 EST


On Mon, Jul 25, 2022 at 08:39:07AM -0700, Nathan Chancellor wrote:
> On Sun, Jul 24, 2022 at 01:39:50PM +0800, kernel test robot wrote:
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.9.y
> > head: 65be5f5665a580424a7b1102f1a04c4259c559b5
> > commit: a8200613c8c9fbaf7b55d4d438376ebaf0c4ce7e [967/2229] ion: Protect kref from userspace manipulation
> > config: mips-randconfig-r034-20220719 (https://download.01.org/0day-ci/archive/20220724/202207241311.Dv86CbAo-lkp@xxxxxxxxx/config)
> > compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project fa0c7639e91fa1cd0cf2ff0445a1634a90fe850a)
> > reproduce (this is a W=1 build):
> > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > chmod +x ~/bin/make.cross
> > # install mips cross compiling tool for clang build
> > # apt-get install binutils-mipsel-linux-gnu
> > # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=a8200613c8c9fbaf7b55d4d438376ebaf0c4ce7e
> > git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > git fetch --no-tags linux-stable-rc linux-4.9.y
> > git checkout a8200613c8c9fbaf7b55d4d438376ebaf0c4ce7e
> > # save the config file
> > mkdir build_dir && cp config build_dir/.config
> > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash drivers/staging/android/ion/
> >
> > If you fix the issue, kindly add following tag where applicable
> > Reported-by: kernel test robot <lkp@xxxxxxxxx>
> >
> > All warnings (new ones prefixed by >>):
> >
> > >> drivers/staging/android/ion/ion-ioctl.c:71:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
> > if (--handle->user_ref_count == 0)
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > drivers/staging/android/ion/ion-ioctl.c:74:9: note: uninitialized use occurs here
> > return ret;
> > ^~~
> > drivers/staging/android/ion/ion-ioctl.c:71:2: note: remove the 'if' if its condition is always true
> > if (--handle->user_ref_count == 0)
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > drivers/staging/android/ion/ion-ioctl.c:69:9: note: initialize the variable 'ret' to silence this warning
> > int ret;
> > ^
> > = 0
> > 1 warning generated.
> >
> >
> > vim +71 drivers/staging/android/ion/ion-ioctl.c
> >
> > 65
> > 66 /* Must hold the client lock */
> > 67 static int user_ion_handle_put_nolock(struct ion_handle *handle)
> > 68 {
> > 69 int ret;
> > 70
> > > 71 if (--handle->user_ref_count == 0)
> > 72 ret = ion_handle_put_nolock(handle);
> > 73
> > 74 return ret;
> > 75 }
> > 76
>
> Might as well just be
>
> static void user_ion_handle_put_nolock(struct ion_handle *handle)
> {
> if (--handle->user_ref_count == 0)
> ion_handle_put_nolock(handle);
> }
>
> since user_ion_free_nolock() doesn't check the return value of
> user_ion_handle_put_nolock()? I can send a patch if people care (I know
> 4.9 is a bit on the older side).

A patch would be nice, thanks!