[alsa-devel] sound/usb/midi.c:1088 substream_open() warn: inconsistent returns mutex:&umidi->mutex: locked (1058) unlocked (1048, 1088)

Dan Carpenter dan.carpenter at oracle.com
Tue Dec 4 11:57:18 CET 2012


Hi Takashi,

FYI, there are new smatch warnings show up in

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-unstable.git master
head:   d34bb8cb0b61e91a036aa516dc6f9ced5af2adc4
commit: 6e28507b716f16618070517dbfcaafe2ca7e9cbe ALSA: usb-audio: Fix missing autopm for MIDI input
date:   6 hours ago

+ sound/usb/midi.c:1088 substream_open() warn: inconsistent returns mutex:&umidi->mutex: locked (1058) unlocked (1048,1088)
  sound/usb/midi.c:2166 snd_usbmidi_create() error: we previously assumed 'quirk' could be null (see line 2155)

git remote update sound-unstable
git checkout 6e28507b716f16618070517dbfcaafe2ca7e9cbe
vim +1088 sound/usb/midi.c

96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1042  	struct snd_kcontrol *ctl;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1043  	int err;
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1044  
cea1c011 sound/usb/midi.c    Takashi Iwai    2012-12-03  1045  	down_read(&umidi->disc_rwsem);
cea1c011 sound/usb/midi.c    Takashi Iwai    2012-12-03  1046  	if (umidi->disconnected) {
cea1c011 sound/usb/midi.c    Takashi Iwai    2012-12-03  1047  		up_read(&umidi->disc_rwsem);
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03 @1048  		return open ? -ENODEV : 0;
cea1c011 sound/usb/midi.c    Takashi Iwai    2012-12-03  1049  	}
cea1c011 sound/usb/midi.c    Takashi Iwai    2012-12-03  1050  
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1051  	mutex_lock(&umidi->mutex);
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1052  	if (open) {
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1053  		if (!umidi->opened[0] && !umidi->opened[1]) {
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1054  			err = usb_autopm_get_interface(umidi->iface);
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1055  			umidi->autopm_reference = err >= 0;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1056  			if (err < 0 && err != -EACCES) {
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1057  				up_read(&umidi->disc_rwsem);
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03 @1058  				return -EIO;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1059  			}
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1060  			if (umidi->roland_load_ctl) {
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1061  				ctl = umidi->roland_load_ctl;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1062  				ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1063  				snd_ctl_notify(umidi->card,
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1064  				       SNDRV_CTL_EVENT_MASK_INFO, &ctl->id);
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1065  				update_roland_altsetting(umidi);
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1066  			}
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1067  		}
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1068  		umidi->opened[dir]++;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1069  		if (umidi->opened[1])
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1070  			snd_usbmidi_input_start(&umidi->list);
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1071  	} else {
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1072  		umidi->opened[dir]--;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1073  		if (!umidi->opened[1])
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1074  			snd_usbmidi_input_stop(&umidi->list);
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1075  		if (!umidi->opened[0] && !umidi->opened[1]) {
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1076  			if (umidi->roland_load_ctl) {
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1077  				ctl = umidi->roland_load_ctl;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1078  				ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1079  				snd_ctl_notify(umidi->card,
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1080  				       SNDRV_CTL_EVENT_MASK_INFO, &ctl->id);
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1081  			}
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1082  			if (umidi->autopm_reference)
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03  1083  				usb_autopm_put_interface(umidi->iface);
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1084  		}
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1085  	}
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1086  	mutex_unlock(&umidi->mutex);
cea1c011 sound/usb/midi.c    Takashi Iwai    2012-12-03  1087  	up_read(&umidi->disc_rwsem);
6e28507b sound/usb/midi.c    Takashi Iwai    2012-12-03 @1088  	return 0;
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1089  }
96f61d9a sound/usb/usbmidi.c Clemens Ladisch 2009-10-22  1090  
86e07d34 sound/usb/usbmidi.c Takashi Iwai    2005-11-17  1091  static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream)

---
0-DAY kernel build testing backend         Open Source Technology Center
Fengguang Wu, Yuanhan Liu                              Intel Corporation


More information about the Alsa-devel mailing list