]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Apr 2013 19:21:04 +0000 (12:21 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Apr 2013 19:21:04 +0000 (12:21 -0700)
added patches:
alsa-usb-audio-fix-endianness-bug-in-snd_nativeinstruments_.patch

queue-3.0/alsa-usb-audio-fix-endianness-bug-in-snd_nativeinstruments_.patch [new file with mode: 0644]
queue-3.0/series [new file with mode: 0644]

diff --git a/queue-3.0/alsa-usb-audio-fix-endianness-bug-in-snd_nativeinstruments_.patch b/queue-3.0/alsa-usb-audio-fix-endianness-bug-in-snd_nativeinstruments_.patch
new file mode 100644 (file)
index 0000000..fff34af
--- /dev/null
@@ -0,0 +1,74 @@
+From 889d66848b12d891248b03abcb2a42047f8e172a Mon Sep 17 00:00:00 2001
+From: Eldad Zack <eldad@fogrefinery.com>
+Date: Fri, 5 Apr 2013 20:49:46 +0200
+Subject: ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_*
+
+From: Eldad Zack <eldad@fogrefinery.com>
+
+commit 889d66848b12d891248b03abcb2a42047f8e172a upstream.
+
+The usb_control_msg() function expects __u16 types and performs
+the endianness conversions by itself.
+However, in three places, a conversion is performed before it is
+handed over to usb_control_msg(), which leads to a double conversion
+(= no conversion):
+* snd_usb_nativeinstruments_boot_quirk()
+* snd_nativeinstruments_control_get()
+* snd_nativeinstruments_control_put()
+
+Caught by sparse:
+
+sound/usb/mixer_quirks.c:512:38: warning: incorrect type in argument 6 (different base types)
+sound/usb/mixer_quirks.c:512:38:    expected unsigned short [unsigned] [usertype] index
+sound/usb/mixer_quirks.c:512:38:    got restricted __le16 [usertype] <noident>
+sound/usb/mixer_quirks.c:543:35: warning: incorrect type in argument 5 (different base types)
+sound/usb/mixer_quirks.c:543:35:    expected unsigned short [unsigned] [usertype] value
+sound/usb/mixer_quirks.c:543:35:    got restricted __le16 [usertype] <noident>
+sound/usb/mixer_quirks.c:543:56: warning: incorrect type in argument 6 (different base types)
+sound/usb/mixer_quirks.c:543:56:    expected unsigned short [unsigned] [usertype] index
+sound/usb/mixer_quirks.c:543:56:    got restricted __le16 [usertype] <noident>
+sound/usb/quirks.c:502:35: warning: incorrect type in argument 5 (different base types)
+sound/usb/quirks.c:502:35:    expected unsigned short [unsigned] [usertype] value
+sound/usb/quirks.c:502:35:    got restricted __le16 [usertype] <noident>
+
+Signed-off-by: Eldad Zack <eldad@fogrefinery.com>
+Acked-by: Daniel Mack <zonque@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/mixer_quirks.c |    4 ++--
+ sound/usb/quirks.c       |    2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/sound/usb/mixer_quirks.c
++++ b/sound/usb/mixer_quirks.c
+@@ -396,7 +396,7 @@ static int snd_nativeinstruments_control
+       else
+               ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), bRequest,
+                                 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
+-                                0, cpu_to_le16(wIndex),
++                                0, wIndex,
+                                 &tmp, sizeof(tmp), 1000);
+       up_read(&mixer->chip->shutdown_rwsem);
+@@ -427,7 +427,7 @@ static int snd_nativeinstruments_control
+       else
+               ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), bRequest,
+                                 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
+-                                cpu_to_le16(wValue), cpu_to_le16(wIndex),
++                                wValue, wIndex,
+                                 NULL, 0, 1000);
+       up_read(&mixer->chip->shutdown_rwsem);
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -455,7 +455,7 @@ static int snd_usb_nativeinstruments_boo
+ {
+       int ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
+                                 0xaf, USB_TYPE_VENDOR | USB_RECIP_DEVICE,
+-                                cpu_to_le16(1), 0, NULL, 0, 1000);
++                                1, 0, NULL, 0, 1000);
+       if (ret < 0)
+               return ret;
diff --git a/queue-3.0/series b/queue-3.0/series
new file mode 100644 (file)
index 0000000..b51adad
--- /dev/null
@@ -0,0 +1 @@
+alsa-usb-audio-fix-endianness-bug-in-snd_nativeinstruments_.patch