All of lore.kernel.org
 help / color / mirror / Atom feed
* sound/pci/ac97/ac97_pcm.c:630 snd_ac97_pcm_open() warn: inconsistent returns '&pcm->bus->bus_lock'.
@ 2025-12-12 12:45 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-12-12 12:45 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Takashi Iwai <tiwai@suse.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   187d0801404f415f22c0b31531982c7ea97fa341
commit: fcee249f98d0b84d5d0222b47d30c93bbca08e17 ALSA: ac97: Use guard() for spin locks
date:   3 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 3 months ago
config: i386-randconfig-141-20251212 (https://download.01.org/0day-ci/archive/20251212/202512122048.tgeB9HR0-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.4.0-5) 12.4.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202512122048.tgeB9HR0-lkp@intel.com/

smatch warnings:
sound/pci/ac97/ac97_pcm.c:630 snd_ac97_pcm_open() warn: inconsistent returns '&pcm->bus->bus_lock'.
sound/pci/ac97/ac97_pcm.c:630 snd_ac97_pcm_open() warn: inconsistent returns 'irq'.

vim +630 sound/pci/ac97/ac97_pcm.c

7b09679c431ba91 Takashi Iwai   2006-04-28  542  
^1da177e4c3f415 Linus Torvalds 2005-04-16  543  /**
^1da177e4c3f415 Linus Torvalds 2005-04-16  544   * snd_ac97_pcm_open - opens the given AC97 pcm
^1da177e4c3f415 Linus Torvalds 2005-04-16  545   * @pcm: the ac97 pcm instance
^1da177e4c3f415 Linus Torvalds 2005-04-16  546   * @rate: rate in Hz, if codec does not support VRA, this value must be 48000Hz
^1da177e4c3f415 Linus Torvalds 2005-04-16  547   * @cfg: output stream characteristics
^1da177e4c3f415 Linus Torvalds 2005-04-16  548   * @slots: a subset of allocated slots (snd_ac97_pcm_assign) for this pcm
^1da177e4c3f415 Linus Torvalds 2005-04-16  549   *
^1da177e4c3f415 Linus Torvalds 2005-04-16  550   * It locks the specified slots and sets the given rate to AC97 registers.
eb7c06e8e9c93b4 Yacine Belkadi 2013-03-11  551   *
eb7c06e8e9c93b4 Yacine Belkadi 2013-03-11  552   * Return: Zero if successful, or a negative error code on failure.
^1da177e4c3f415 Linus Torvalds 2005-04-16  553   */
^1da177e4c3f415 Linus Torvalds 2005-04-16  554  int snd_ac97_pcm_open(struct ac97_pcm *pcm, unsigned int rate,
^1da177e4c3f415 Linus Torvalds 2005-04-16  555  		      enum ac97_pcm_cfg cfg, unsigned short slots)
^1da177e4c3f415 Linus Torvalds 2005-04-16  556  {
ee42381e71c5632 Takashi Iwai   2005-11-17  557  	struct snd_ac97_bus *bus;
^1da177e4c3f415 Linus Torvalds 2005-04-16  558  	int i, cidx, r, ok_flag;
^1da177e4c3f415 Linus Torvalds 2005-04-16  559  	unsigned int reg_ok[4] = {0,0,0,0};
^1da177e4c3f415 Linus Torvalds 2005-04-16  560  	unsigned char reg;
^1da177e4c3f415 Linus Torvalds 2005-04-16  561  	int err = 0;
^1da177e4c3f415 Linus Torvalds 2005-04-16  562  
^1da177e4c3f415 Linus Torvalds 2005-04-16  563  	r = rate > 48000;
^1da177e4c3f415 Linus Torvalds 2005-04-16  564  	bus = pcm->bus;
^1da177e4c3f415 Linus Torvalds 2005-04-16  565  	if (cfg == AC97_PCM_CFG_SPDIF) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  566  		for (cidx = 0; cidx < 4; cidx++)
^1da177e4c3f415 Linus Torvalds 2005-04-16  567  			if (bus->codec[cidx] && (bus->codec[cidx]->ext_id & AC97_EI_SPDIF)) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  568  				err = set_spdif_rate(bus->codec[cidx], rate);
^1da177e4c3f415 Linus Torvalds 2005-04-16  569  				if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16  570  					return err;
^1da177e4c3f415 Linus Torvalds 2005-04-16  571  			}
^1da177e4c3f415 Linus Torvalds 2005-04-16  572  	}
fcee249f98d0b84 Takashi Iwai   2025-08-29  573  	scoped_guard(spinlock_irq, &pcm->bus->bus_lock) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  574  		for (i = 3; i < 12; i++) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  575  			if (!(slots & (1 << i)))
^1da177e4c3f415 Linus Torvalds 2005-04-16  576  				continue;
^1da177e4c3f415 Linus Torvalds 2005-04-16  577  			ok_flag = 0;
^1da177e4c3f415 Linus Torvalds 2005-04-16  578  			for (cidx = 0; cidx < 4; cidx++) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  579  				if (bus->used_slots[pcm->stream][cidx] & (1 << i)) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  580  					err = -EBUSY;
^1da177e4c3f415 Linus Torvalds 2005-04-16  581  					goto error;
^1da177e4c3f415 Linus Torvalds 2005-04-16  582  				}
^1da177e4c3f415 Linus Torvalds 2005-04-16  583  				if (pcm->r[r].rslots[cidx] & (1 << i)) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  584  					bus->used_slots[pcm->stream][cidx] |= (1 << i);
^1da177e4c3f415 Linus Torvalds 2005-04-16  585  					ok_flag++;
^1da177e4c3f415 Linus Torvalds 2005-04-16  586  				}
^1da177e4c3f415 Linus Torvalds 2005-04-16  587  			}
^1da177e4c3f415 Linus Torvalds 2005-04-16  588  			if (!ok_flag) {
38c16e34fe2f72c Takashi Iwai   2014-02-25  589  				dev_err(bus->card->dev,
38c16e34fe2f72c Takashi Iwai   2014-02-25  590  					"cannot find configuration for AC97 slot %i\n",
38c16e34fe2f72c Takashi Iwai   2014-02-25  591  					i);
^1da177e4c3f415 Linus Torvalds 2005-04-16  592  				err = -EAGAIN;
^1da177e4c3f415 Linus Torvalds 2005-04-16  593  				goto error;
^1da177e4c3f415 Linus Torvalds 2005-04-16  594  			}
^1da177e4c3f415 Linus Torvalds 2005-04-16  595  		}
6dbe662874ba085 Takashi Iwai   2006-06-27  596  		pcm->cur_dbl = r;
fcee249f98d0b84 Takashi Iwai   2025-08-29  597  	}
^1da177e4c3f415 Linus Torvalds 2005-04-16  598  	for (i = 3; i < 12; i++) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  599  		if (!(slots & (1 << i)))
^1da177e4c3f415 Linus Torvalds 2005-04-16  600  			continue;
^1da177e4c3f415 Linus Torvalds 2005-04-16  601  		for (cidx = 0; cidx < 4; cidx++) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  602  			if (pcm->r[r].rslots[cidx] & (1 << i)) {
^1da177e4c3f415 Linus Torvalds 2005-04-16  603  				reg = get_slot_reg(pcm, cidx, i, r);
^1da177e4c3f415 Linus Torvalds 2005-04-16  604  				if (reg == 0xff) {
38c16e34fe2f72c Takashi Iwai   2014-02-25  605  					dev_err(bus->card->dev,
38c16e34fe2f72c Takashi Iwai   2014-02-25  606  						"invalid AC97 slot %i?\n", i);
^1da177e4c3f415 Linus Torvalds 2005-04-16  607  					continue;
^1da177e4c3f415 Linus Torvalds 2005-04-16  608  				}
^1da177e4c3f415 Linus Torvalds 2005-04-16  609  				if (reg_ok[cidx] & (1 << (reg - AC97_PCM_FRONT_DAC_RATE)))
^1da177e4c3f415 Linus Torvalds 2005-04-16  610  					continue;
38c16e34fe2f72c Takashi Iwai   2014-02-25  611  				dev_dbg(bus->card->dev,
38c16e34fe2f72c Takashi Iwai   2014-02-25  612  					"setting ac97 reg 0x%x to rate %d\n",
38c16e34fe2f72c Takashi Iwai   2014-02-25  613  					reg, rate);
^1da177e4c3f415 Linus Torvalds 2005-04-16  614  				err = snd_ac97_set_rate(pcm->r[r].codec[cidx], reg, rate);
^1da177e4c3f415 Linus Torvalds 2005-04-16  615  				if (err < 0)
38c16e34fe2f72c Takashi Iwai   2014-02-25  616  					dev_err(bus->card->dev,
38c16e34fe2f72c Takashi Iwai   2014-02-25  617  						"error in snd_ac97_set_rate: cidx=%d, reg=0x%x, rate=%d, err=%d\n",
38c16e34fe2f72c Takashi Iwai   2014-02-25  618  						cidx, reg, rate, err);
^1da177e4c3f415 Linus Torvalds 2005-04-16  619  				else
^1da177e4c3f415 Linus Torvalds 2005-04-16  620  					reg_ok[cidx] |= (1 << (reg - AC97_PCM_FRONT_DAC_RATE));
^1da177e4c3f415 Linus Torvalds 2005-04-16  621  			}
^1da177e4c3f415 Linus Torvalds 2005-04-16  622  		}
^1da177e4c3f415 Linus Torvalds 2005-04-16  623  	}
^1da177e4c3f415 Linus Torvalds 2005-04-16  624  	pcm->aslots = slots;
^1da177e4c3f415 Linus Torvalds 2005-04-16  625  	return 0;
^1da177e4c3f415 Linus Torvalds 2005-04-16  626  
^1da177e4c3f415 Linus Torvalds 2005-04-16  627   error:
^1da177e4c3f415 Linus Torvalds 2005-04-16  628  	pcm->aslots = slots;
^1da177e4c3f415 Linus Torvalds 2005-04-16  629  	snd_ac97_pcm_close(pcm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 @630  	return err;
^1da177e4c3f415 Linus Torvalds 2005-04-16  631  }
^1da177e4c3f415 Linus Torvalds 2005-04-16  632  

:::::: The code at line 630 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

* sound/pci/ac97/ac97_pcm.c:630 snd_ac97_pcm_open() warn: inconsistent returns '&pcm->bus->bus_lock'.
@ 2026-03-24  8:22 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-03-24  8:22 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Takashi Iwai <tiwai@suse.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   c369299895a591d96745d6492d4888259b004a9e
commit: fcee249f98d0b84d5d0222b47d30c93bbca08e17 ALSA: ac97: Use guard() for spin locks
date:   7 months ago
:::::: branch date: 35 hours ago
:::::: commit date: 7 months ago
config: riscv-randconfig-r073-20260324 (https://download.01.org/0day-ci/archive/20260324/202603241636.NHZgqDzh-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
smatch: v0.5.0-9004-gb810ac53

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603241636.NHZgqDzh-lkp@intel.com/

smatch warnings:
sound/pci/ac97/ac97_pcm.c:630 snd_ac97_pcm_open() warn: inconsistent returns '&pcm->bus->bus_lock'.
sound/pci/ac97/ac97_pcm.c:630 snd_ac97_pcm_open() warn: inconsistent returns 'irq'.

vim +630 sound/pci/ac97/ac97_pcm.c

7b09679c431ba9 Takashi Iwai   2006-04-28  542  
^1da177e4c3f41 Linus Torvalds 2005-04-16  543  /**
^1da177e4c3f41 Linus Torvalds 2005-04-16  544   * snd_ac97_pcm_open - opens the given AC97 pcm
^1da177e4c3f41 Linus Torvalds 2005-04-16  545   * @pcm: the ac97 pcm instance
^1da177e4c3f41 Linus Torvalds 2005-04-16  546   * @rate: rate in Hz, if codec does not support VRA, this value must be 48000Hz
^1da177e4c3f41 Linus Torvalds 2005-04-16  547   * @cfg: output stream characteristics
^1da177e4c3f41 Linus Torvalds 2005-04-16  548   * @slots: a subset of allocated slots (snd_ac97_pcm_assign) for this pcm
^1da177e4c3f41 Linus Torvalds 2005-04-16  549   *
^1da177e4c3f41 Linus Torvalds 2005-04-16  550   * It locks the specified slots and sets the given rate to AC97 registers.
eb7c06e8e9c93b Yacine Belkadi 2013-03-11  551   *
eb7c06e8e9c93b Yacine Belkadi 2013-03-11  552   * Return: Zero if successful, or a negative error code on failure.
^1da177e4c3f41 Linus Torvalds 2005-04-16  553   */
^1da177e4c3f41 Linus Torvalds 2005-04-16  554  int snd_ac97_pcm_open(struct ac97_pcm *pcm, unsigned int rate,
^1da177e4c3f41 Linus Torvalds 2005-04-16  555  		      enum ac97_pcm_cfg cfg, unsigned short slots)
^1da177e4c3f41 Linus Torvalds 2005-04-16  556  {
ee42381e71c563 Takashi Iwai   2005-11-17  557  	struct snd_ac97_bus *bus;
^1da177e4c3f41 Linus Torvalds 2005-04-16  558  	int i, cidx, r, ok_flag;
^1da177e4c3f41 Linus Torvalds 2005-04-16  559  	unsigned int reg_ok[4] = {0,0,0,0};
^1da177e4c3f41 Linus Torvalds 2005-04-16  560  	unsigned char reg;
^1da177e4c3f41 Linus Torvalds 2005-04-16  561  	int err = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16  562  
^1da177e4c3f41 Linus Torvalds 2005-04-16  563  	r = rate > 48000;
^1da177e4c3f41 Linus Torvalds 2005-04-16  564  	bus = pcm->bus;
^1da177e4c3f41 Linus Torvalds 2005-04-16  565  	if (cfg == AC97_PCM_CFG_SPDIF) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  566  		for (cidx = 0; cidx < 4; cidx++)
^1da177e4c3f41 Linus Torvalds 2005-04-16  567  			if (bus->codec[cidx] && (bus->codec[cidx]->ext_id & AC97_EI_SPDIF)) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  568  				err = set_spdif_rate(bus->codec[cidx], rate);
^1da177e4c3f41 Linus Torvalds 2005-04-16  569  				if (err < 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16  570  					return err;
^1da177e4c3f41 Linus Torvalds 2005-04-16  571  			}
^1da177e4c3f41 Linus Torvalds 2005-04-16  572  	}
fcee249f98d0b8 Takashi Iwai   2025-08-29  573  	scoped_guard(spinlock_irq, &pcm->bus->bus_lock) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  574  		for (i = 3; i < 12; i++) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  575  			if (!(slots & (1 << i)))
^1da177e4c3f41 Linus Torvalds 2005-04-16  576  				continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16  577  			ok_flag = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16  578  			for (cidx = 0; cidx < 4; cidx++) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  579  				if (bus->used_slots[pcm->stream][cidx] & (1 << i)) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  580  					err = -EBUSY;
^1da177e4c3f41 Linus Torvalds 2005-04-16  581  					goto error;
^1da177e4c3f41 Linus Torvalds 2005-04-16  582  				}
^1da177e4c3f41 Linus Torvalds 2005-04-16  583  				if (pcm->r[r].rslots[cidx] & (1 << i)) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  584  					bus->used_slots[pcm->stream][cidx] |= (1 << i);
^1da177e4c3f41 Linus Torvalds 2005-04-16  585  					ok_flag++;
^1da177e4c3f41 Linus Torvalds 2005-04-16  586  				}
^1da177e4c3f41 Linus Torvalds 2005-04-16  587  			}
^1da177e4c3f41 Linus Torvalds 2005-04-16  588  			if (!ok_flag) {
38c16e34fe2f72 Takashi Iwai   2014-02-25  589  				dev_err(bus->card->dev,
38c16e34fe2f72 Takashi Iwai   2014-02-25  590  					"cannot find configuration for AC97 slot %i\n",
38c16e34fe2f72 Takashi Iwai   2014-02-25  591  					i);
^1da177e4c3f41 Linus Torvalds 2005-04-16  592  				err = -EAGAIN;
^1da177e4c3f41 Linus Torvalds 2005-04-16  593  				goto error;
^1da177e4c3f41 Linus Torvalds 2005-04-16  594  			}
^1da177e4c3f41 Linus Torvalds 2005-04-16  595  		}
6dbe662874ba08 Takashi Iwai   2006-06-27  596  		pcm->cur_dbl = r;
fcee249f98d0b8 Takashi Iwai   2025-08-29  597  	}
^1da177e4c3f41 Linus Torvalds 2005-04-16  598  	for (i = 3; i < 12; i++) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  599  		if (!(slots & (1 << i)))
^1da177e4c3f41 Linus Torvalds 2005-04-16  600  			continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16  601  		for (cidx = 0; cidx < 4; cidx++) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  602  			if (pcm->r[r].rslots[cidx] & (1 << i)) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  603  				reg = get_slot_reg(pcm, cidx, i, r);
^1da177e4c3f41 Linus Torvalds 2005-04-16  604  				if (reg == 0xff) {
38c16e34fe2f72 Takashi Iwai   2014-02-25  605  					dev_err(bus->card->dev,
38c16e34fe2f72 Takashi Iwai   2014-02-25  606  						"invalid AC97 slot %i?\n", i);
^1da177e4c3f41 Linus Torvalds 2005-04-16  607  					continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16  608  				}
^1da177e4c3f41 Linus Torvalds 2005-04-16  609  				if (reg_ok[cidx] & (1 << (reg - AC97_PCM_FRONT_DAC_RATE)))
^1da177e4c3f41 Linus Torvalds 2005-04-16  610  					continue;
38c16e34fe2f72 Takashi Iwai   2014-02-25  611  				dev_dbg(bus->card->dev,
38c16e34fe2f72 Takashi Iwai   2014-02-25  612  					"setting ac97 reg 0x%x to rate %d\n",
38c16e34fe2f72 Takashi Iwai   2014-02-25  613  					reg, rate);
^1da177e4c3f41 Linus Torvalds 2005-04-16  614  				err = snd_ac97_set_rate(pcm->r[r].codec[cidx], reg, rate);
^1da177e4c3f41 Linus Torvalds 2005-04-16  615  				if (err < 0)
38c16e34fe2f72 Takashi Iwai   2014-02-25  616  					dev_err(bus->card->dev,
38c16e34fe2f72 Takashi Iwai   2014-02-25  617  						"error in snd_ac97_set_rate: cidx=%d, reg=0x%x, rate=%d, err=%d\n",
38c16e34fe2f72 Takashi Iwai   2014-02-25  618  						cidx, reg, rate, err);
^1da177e4c3f41 Linus Torvalds 2005-04-16  619  				else
^1da177e4c3f41 Linus Torvalds 2005-04-16  620  					reg_ok[cidx] |= (1 << (reg - AC97_PCM_FRONT_DAC_RATE));
^1da177e4c3f41 Linus Torvalds 2005-04-16  621  			}
^1da177e4c3f41 Linus Torvalds 2005-04-16  622  		}
^1da177e4c3f41 Linus Torvalds 2005-04-16  623  	}
^1da177e4c3f41 Linus Torvalds 2005-04-16  624  	pcm->aslots = slots;
^1da177e4c3f41 Linus Torvalds 2005-04-16  625  	return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16  626  
^1da177e4c3f41 Linus Torvalds 2005-04-16  627   error:
^1da177e4c3f41 Linus Torvalds 2005-04-16  628  	pcm->aslots = slots;
^1da177e4c3f41 Linus Torvalds 2005-04-16  629  	snd_ac97_pcm_close(pcm);
^1da177e4c3f41 Linus Torvalds 2005-04-16 @630  	return err;
^1da177e4c3f41 Linus Torvalds 2005-04-16  631  }
^1da177e4c3f41 Linus Torvalds 2005-04-16  632  

:::::: The code at line 630 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-03-24  8:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-24  8:22 sound/pci/ac97/ac97_pcm.c:630 snd_ac97_pcm_open() warn: inconsistent returns '&pcm->bus->bus_lock' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2025-12-12 12:45 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.