Browse Source

[ALSA] missing error check in usb sound driver

usb_set_interface() can fail, even for altsetting 0

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Oliver Neukum 17 năm trước cách đây
mục cha
commit
5149fe2c15
1 tập tin đã thay đổi với 5 bổ sung1 xóa
  1. 5 1
      sound/usb/usbaudio.c

+ 5 - 1
sound/usb/usbaudio.c

@@ -1308,7 +1308,11 @@ static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt)
 
 
 	/* close the old interface */
 	/* close the old interface */
 	if (subs->interface >= 0 && subs->interface != fmt->iface) {
 	if (subs->interface >= 0 && subs->interface != fmt->iface) {
-		usb_set_interface(subs->dev, subs->interface, 0);
+		if (usb_set_interface(subs->dev, subs->interface, 0) < 0) {
+			snd_printk(KERN_ERR "%d:%d:%d: return to setting 0 failed\n",
+				dev->devnum, fmt->iface, fmt->altsetting);
+			return -EIO;
+		}
 		subs->interface = -1;
 		subs->interface = -1;
 		subs->format = 0;
 		subs->format = 0;
 	}
 	}