]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/3.8.8/alsa-usb-audio-fix-endianness-bug-in-snd_nativeinstruments_.patch
5.1-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 3.8.8 / alsa-usb-audio-fix-endianness-bug-in-snd_nativeinstruments_.patch
CommitLineData
72c0f505
GKH
1From 889d66848b12d891248b03abcb2a42047f8e172a Mon Sep 17 00:00:00 2001
2From: Eldad Zack <eldad@fogrefinery.com>
3Date: Fri, 5 Apr 2013 20:49:46 +0200
4Subject: ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_*
5
6From: Eldad Zack <eldad@fogrefinery.com>
7
8commit 889d66848b12d891248b03abcb2a42047f8e172a upstream.
9
10The usb_control_msg() function expects __u16 types and performs
11the endianness conversions by itself.
12However, in three places, a conversion is performed before it is
13handed over to usb_control_msg(), which leads to a double conversion
14(= no conversion):
15* snd_usb_nativeinstruments_boot_quirk()
16* snd_nativeinstruments_control_get()
17* snd_nativeinstruments_control_put()
18
19Caught by sparse:
20
21sound/usb/mixer_quirks.c:512:38: warning: incorrect type in argument 6 (different base types)
22sound/usb/mixer_quirks.c:512:38: expected unsigned short [unsigned] [usertype] index
23sound/usb/mixer_quirks.c:512:38: got restricted __le16 [usertype] <noident>
24sound/usb/mixer_quirks.c:543:35: warning: incorrect type in argument 5 (different base types)
25sound/usb/mixer_quirks.c:543:35: expected unsigned short [unsigned] [usertype] value
26sound/usb/mixer_quirks.c:543:35: got restricted __le16 [usertype] <noident>
27sound/usb/mixer_quirks.c:543:56: warning: incorrect type in argument 6 (different base types)
28sound/usb/mixer_quirks.c:543:56: expected unsigned short [unsigned] [usertype] index
29sound/usb/mixer_quirks.c:543:56: got restricted __le16 [usertype] <noident>
30sound/usb/quirks.c:502:35: warning: incorrect type in argument 5 (different base types)
31sound/usb/quirks.c:502:35: expected unsigned short [unsigned] [usertype] value
32sound/usb/quirks.c:502:35: got restricted __le16 [usertype] <noident>
33
34Signed-off-by: Eldad Zack <eldad@fogrefinery.com>
35Acked-by: Daniel Mack <zonque@gmail.com>
36Signed-off-by: Takashi Iwai <tiwai@suse.de>
37Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
38
39---
40 sound/usb/mixer_quirks.c | 4 ++--
41 sound/usb/quirks.c | 2 +-
42 2 files changed, 3 insertions(+), 3 deletions(-)
43
44--- a/sound/usb/mixer_quirks.c
45+++ b/sound/usb/mixer_quirks.c
46@@ -509,7 +509,7 @@ static int snd_nativeinstruments_control
47 else
48 ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), bRequest,
49 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
50- 0, cpu_to_le16(wIndex),
51+ 0, wIndex,
52 &tmp, sizeof(tmp), 1000);
53 up_read(&mixer->chip->shutdown_rwsem);
54
55@@ -540,7 +540,7 @@ static int snd_nativeinstruments_control
56 else
57 ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), bRequest,
58 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
59- cpu_to_le16(wValue), cpu_to_le16(wIndex),
60+ wValue, wIndex,
61 NULL, 0, 1000);
62 up_read(&mixer->chip->shutdown_rwsem);
63
64--- a/sound/usb/quirks.c
65+++ b/sound/usb/quirks.c
66@@ -486,7 +486,7 @@ static int snd_usb_nativeinstruments_boo
67 {
68 int ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
69 0xaf, USB_TYPE_VENDOR | USB_RECIP_DEVICE,
70- cpu_to_le16(1), 0, NULL, 0, 1000);
71+ 1, 0, NULL, 0, 1000);
72
73 if (ret < 0)
74 return ret;