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

Takashi Iwai tiwai at suse.de
Tue Dec 4 12:35:52 CET 2012


At Tue, 4 Dec 2012 13:57:18 +0300,
Dan Carpenter wrote:
> 
> 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)

This was already pointed by Clemens, and fixed in this morning.

>   sound/usb/midi.c:2166 snd_usbmidi_create() error: we previously assumed 'quirk' could be null (see line 2155)

This should be a false error.  When quirk is NULL, the only handled
case is QUIRK_MIDI_STANDARD_INTERFACE:
        switch (quirk ? quirk->type : QUIRK_MIDI_STANDARD_INTERFACE) {


thanks,

Takashi


> 
> 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