lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Wed, 26 Jan 2022 21:57:06 +0800
From:   kernel test robot <lkp@...el.com>
To:     Mark Brown <broonie@...nel.org>
Cc:     kbuild-all@...ts.01.org, GNU/Weeb Mailing List <gwml@...weeb.org>,
        linux-kernel@...r.kernel.org
Subject: [ammarfaizi2-block:broonie/sound/for-linus 179/181]
 sound/soc/soc-ops.c:324 snd_soc_put_volsw() warn: unsigned 'val' is never
 less than zero.

tree:   https://github.com/ammarfaizi2/linux-block broonie/sound/for-linus
head:   4cf28e9ae6e2e11a044be1bcbcfa1b0d8675fe4d
commit: 817f7c9335ec01e0f5e8caffc4f1dcd5e458a4c0 [179/181] ASoC: ops: Reject out of bounds values in snd_soc_put_volsw()
config: openrisc-randconfig-m031-20220124 (https://download.01.org/0day-ci/archive/20220126/202201262114.DuFfpPvs-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

smatch warnings:
sound/soc/soc-ops.c:324 snd_soc_put_volsw() warn: unsigned 'val' is never less than zero.
sound/soc/soc-ops.c:337 snd_soc_put_volsw() warn: unsigned 'val2' is never less than zero.

vim +/val +324 sound/soc/soc-ops.c

   285	
   286	/**
   287	 * snd_soc_put_volsw - single mixer put callback
   288	 * @kcontrol: mixer control
   289	 * @ucontrol: control element information
   290	 *
   291	 * Callback to set the value of a single mixer control, or a double mixer
   292	 * control that spans 2 registers.
   293	 *
   294	 * Returns 0 for success.
   295	 */
   296	int snd_soc_put_volsw(struct snd_kcontrol *kcontrol,
   297		struct snd_ctl_elem_value *ucontrol)
   298	{
   299		struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
   300		struct soc_mixer_control *mc =
   301			(struct soc_mixer_control *)kcontrol->private_value;
   302		unsigned int reg = mc->reg;
   303		unsigned int reg2 = mc->rreg;
   304		unsigned int shift = mc->shift;
   305		unsigned int rshift = mc->rshift;
   306		int max = mc->max;
   307		int min = mc->min;
   308		unsigned int sign_bit = mc->sign_bit;
   309		unsigned int mask = (1 << fls(max)) - 1;
   310		unsigned int invert = mc->invert;
   311		int err;
   312		bool type_2r = false;
   313		unsigned int val2 = 0;
   314		unsigned int val, val_mask;
   315	
   316		if (sign_bit)
   317			mask = BIT(sign_bit + 1) - 1;
   318	
   319		val = ucontrol->value.integer.value[0];
   320		if (mc->platform_max && val > mc->platform_max)
   321			return -EINVAL;
   322		if (val > max - min)
   323			return -EINVAL;
 > 324		if (val < 0)
   325			return -EINVAL;
   326		val = (val + min) & mask;
   327		if (invert)
   328			val = max - val;
   329		val_mask = mask << shift;
   330		val = val << shift;
   331		if (snd_soc_volsw_is_stereo(mc)) {
   332			val2 = ucontrol->value.integer.value[1];
   333			if (mc->platform_max && val2 > mc->platform_max)
   334				return -EINVAL;
   335			if (val2 > max - min)
   336				return -EINVAL;
 > 337			if (val2 < 0)
   338				return -EINVAL;
   339			val2 = (val2 + min) & mask;
   340			if (invert)
   341				val2 = max - val2;
   342			if (reg == reg2) {
   343				val_mask |= mask << rshift;
   344				val |= val2 << rshift;
   345			} else {
   346				val2 = val2 << shift;
   347				type_2r = true;
   348			}
   349		}
   350		err = snd_soc_component_update_bits(component, reg, val_mask, val);
   351		if (err < 0)
   352			return err;
   353	
   354		if (type_2r)
   355			err = snd_soc_component_update_bits(component, reg2, val_mask,
   356				val2);
   357	
   358		return err;
   359	}
   360	EXPORT_SYMBOL_GPL(snd_soc_put_volsw);
   361	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Powered by blists - more mailing lists