aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb
diff options
context:
space:
mode:
authorThomas Pfaff <tpfaff@gmx.net>2011-09-22 18:26:06 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2011-10-03 11:41:02 -0700
commit8fc04d468cc3e98099140ef3d76339f10e7ec30a (patch)
tree81bb1db2601c943f227de5df8b960b271d7f369c /sound/usb
parent8413239bfc9e8b94af509c7a43c7d92bd8965630 (diff)
downloadkernel_samsung_smdk4412-8fc04d468cc3e98099140ef3d76339f10e7ec30a.zip
kernel_samsung_smdk4412-8fc04d468cc3e98099140ef3d76339f10e7ec30a.tar.gz
kernel_samsung_smdk4412-8fc04d468cc3e98099140ef3d76339f10e7ec30a.tar.bz2
ALSA: usb-audio - clear chip->probing on error exit
commit 362e4e49abe53e89d87455dfcd7c1bbaf08a839d upstream. The Terratec Aureon 5.1 USB sound card support is broken since kernel 2.6.39. 2.6.39 introduced power management support for USB sound cards that added a probing flag in struct snd_usb_audio. During the probe of the card it gives following error message : usb 7-2: new full speed USB device number 2 using uhci_hcd cannot find UAC_HEADER snd-usb-audio: probe of 7-2:1.3 failed with error -5 input: USB Audio as /devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.3/input/input6 generic-usb 0003:0CCD:0028.0001: input: USB HID v1.00 Device [USB Audio] on usb-0000:00:1d.1-2/input3 I can not comment about that "cannot find UAC_HEADER" error, but until 2.6.38 the card worked anyway. With 2.6.39 chip->probing remains 1 on error exit, and any later ioctl stops in snd_usb_autoresume with -ENODEV. Signed-off-by: Thomas Pfaff <tpfaff@gmx.net> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'sound/usb')
-rw-r--r--sound/usb/card.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c
index 220c616..29b3094 100644
--- a/sound/usb/card.c
+++ b/sound/usb/card.c
@@ -531,6 +531,7 @@ static void *snd_usb_audio_probe(struct usb_device *dev,
__error:
if (chip && !chip->num_interfaces)
snd_card_free(chip->card);
+ chip->probing = 0;
mutex_unlock(&register_mutex);
__err_val:
return NULL;