lkml.org 
[lkml]   [2013]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 01/11] ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_*
    Date
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    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;



    \
     
     \ /
      Last update: 2013-04-15 05:21    [W:3.638 / U:0.224 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site