Eldad Zack <eldad@xxxxxxxxxxxxxxx> wrote: >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@xxxxxxxxxxxxxxx> Acked-by: Daniel Mack <zonque@xxxxxxxxx> Thanks for catching this! Daniel >--- > sound/usb/mixer_quirks.c | 4 ++-- > sound/usb/quirks.c | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) > >diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c >index 497d274..ebe9144 100644 >--- a/sound/usb/mixer_quirks.c >+++ b/sound/usb/mixer_quirks.c >@@ -509,7 +509,7 @@ static int snd_nativeinstruments_control_get(struct >snd_kcontrol *kcontrol, > 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); > >@@ -540,7 +540,7 @@ static int snd_nativeinstruments_control_put(struct >snd_kcontrol *kcontrol, > 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); > >diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c >index a2ac004..68e9220 100644 >--- a/sound/usb/quirks.c >+++ b/sound/usb/quirks.c >@@ -499,7 +499,7 @@ static int >snd_usb_nativeinstruments_boot_quirk(struct usb_device *dev) > { > 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; _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel