Messages in this thread | | | Date | Sat, 07 Nov 2009 10:22:45 +0100 | From | Takashi Iwai <> | Subject | Re: [PATCH] usb-audio: fix combine_word problem |
| |
At Fri, 6 Nov 2009 23:44:53 +0200 (EET), Julian Anastasov wrote: > > > Fix combine_word problem where first octet is not > read properly. The only affected place seems to be the > INPUT_TERMINAL type. Before now, sound controls can be created > with the output terminal's name which is a fallback mechanism > used only for unknown input terminal types. For example, > Line can wrongly appear as Speaker. After the change it > should appear as Line.
Wow, this is really an old bug. I wonder no one noticed it, so far...
> The side effect of this change can be that users > can expect the wrong control name in their scripts or > programs while now we return the correct one.
Yes, but it's a right "fix", so let it be.
> Probably, these defines should use get_unaligned_le16 and > friends.
Sounds like a good idea. But 24bit version is still missing :)
> Signed-off-by: Julian Anastasov <ja@ssi.bg>
Applied now, and added Cc to stable kernel.
Thanks!
Takashi
> --- > > diff -urp v2.6.31/linux/sound/usb/usbaudio.h linux/sound/usb/usbaudio.h > --- v2.6.31/linux/sound/usb/usbaudio.h 2009-06-13 10:53:59.000000000 +0300 > +++ linux/sound/usb/usbaudio.h 2009-11-06 22:38:00.000000000 +0200 > @@ -210,7 +210,7 @@ struct snd_usb_midi_endpoint_info { > /* > */ > > -#define combine_word(s) ((*s) | ((unsigned int)(s)[1] << 8)) > +#define combine_word(s) ((*(s)) | ((unsigned int)(s)[1] << 8)) > #define combine_triple(s) (combine_word(s) | ((unsigned int)(s)[2] << 16)) > #define combine_quad(s) (combine_triple(s) | ((unsigned int)(s)[3] << 24)) > >
| |