[alsa-devel] [bug report] ALSA: pcm: Return -EBUSY for OSS ioctls changing busy streams
Dan Carpenter
dan.carpenter at oracle.com
Tue Mar 27 14:27:30 CEST 2018
Hello Takashi Iwai,
The patch 40cab6e88cb0: "ALSA: pcm: Return -EBUSY for OSS ioctls
changing busy streams" from Mar 23, 2018, leads to the following
static checker warning:
sound/core/oss/pcm_oss.c:1741 snd_pcm_oss_set_rate()
warn: inconsistent returns 'mutex:&runtime->oss.params_lock'.
Locked on: line 1734
Unlocked on: line 1732
line 1741
sound/core/oss/pcm_oss.c
1717 static int snd_pcm_oss_set_rate(struct snd_pcm_oss_file *pcm_oss_file, int rate)
1718 {
1719 int idx;
1720
1721 for (idx = 1; idx >= 0; --idx) {
1722 struct snd_pcm_substream *substream = pcm_oss_file->streams[idx];
1723 struct snd_pcm_runtime *runtime;
1724 if (substream == NULL)
1725 continue;
1726 runtime = substream->runtime;
1727 if (rate < 1000)
1728 rate = 1000;
1729 else if (rate > 192000)
1730 rate = 192000;
1731 if (mutex_lock_interruptible(&runtime->oss.params_lock))
1732 return -ERESTARTSYS;
1733 if (atomic_read(&runtime->oss.rw_ref))
1734 return -EBUSY;
^^^^^^^^^^^^^
Unlock before returning?
1735 if (runtime->oss.rate != rate) {
1736 runtime->oss.params = 1;
1737 runtime->oss.rate = rate;
1738 }
1739 mutex_unlock(&runtime->oss.params_lock);
1740 }
1741 return snd_pcm_oss_get_rate(pcm_oss_file);
1742 }
regards,
dan carpenter
More information about the Alsa-devel
mailing list