sound/core/control.c:390:11: sparse: sparse: incorrect type in assignment (different base types)

From: kernel test robot
Date: Wed Aug 10 2022 - 17:24:14 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f41445645ab5d172e6090d00c332c335d8dba337
commit: c27e1efb61c545f36c450ef60862df9251d239a4 ALSA: control: Use xarray for faster lookups
date: 8 weeks ago
config: i386-randconfig-s001 (https://download.01.org/0day-ci/archive/20220811/202208110507.pZ5Q9mMb-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c27e1efb61c545f36c450ef60862df9251d239a4
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout c27e1efb61c545f36c450ef60862df9251d239a4
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash sound/core/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

sparse warnings: (new ones prefixed by >>)
>> sound/core/control.c:390:11: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long h @@ got restricted snd_ctl_elem_iface_t const [usertype] iface @@
sound/core/control.c:390:11: sparse: expected unsigned long h
sound/core/control.c:390:11: sparse: got restricted snd_ctl_elem_iface_t const [usertype] iface
sound/core/control.c:926:17: sparse: sparse: restricted snd_ctl_elem_type_t degrades to integer
sound/core/control.c:926:26: sparse: sparse: restricted snd_ctl_elem_type_t degrades to integer
sound/core/control.c:927:17: sparse: sparse: restricted snd_ctl_elem_type_t degrades to integer
sound/core/control.c:927:26: sparse: sparse: restricted snd_ctl_elem_type_t degrades to integer
sound/core/control.c:946:48: sparse: sparse: restricted snd_ctl_elem_type_t degrades to integer
sound/core/control.c:1640:40: sparse: sparse: restricted snd_ctl_elem_type_t degrades to integer

vim +390 sound/core/control.c

378
379 #ifdef CONFIG_SND_CTL_FAST_LOOKUP
380 /* Compute a hash key for the corresponding ctl id
381 * It's for the name lookup, hence the numid is excluded.
382 * The hash key is bound in LONG_MAX to be used for Xarray key.
383 */
384 #define MULTIPLIER 37
385 static unsigned long get_ctl_id_hash(const struct snd_ctl_elem_id *id)
386 {
387 unsigned long h;
388 const unsigned char *p;
389
> 390 h = id->iface;
391 h = MULTIPLIER * h + id->device;
392 h = MULTIPLIER * h + id->subdevice;
393 for (p = id->name; *p; p++)
394 h = MULTIPLIER * h + *p;
395 h = MULTIPLIER * h + id->index;
396 h &= LONG_MAX;
397 return h;
398 }
399

--
0-DAY CI Kernel Test Service
https://01.org/lkp