[alsa-devel] [PATCH 0/7] ALSA: USB-audio: Support Zoom R16 playback

Takashi Iwai tiwai at suse.de
Fri Oct 16 14:27:57 CEST 2015


On Fri, 16 Oct 2015 13:20:22 +0200,
Ricard Wanderlof wrote:
> 
> 
> On Fri, 16 Oct 2015, Takashi Iwai wrote:
> 
> > > unsigned int length;
> > > u32 packet_length = cpu_to_le32((u32)length);
> > 
> > No, other way round: the problem is that packet_length is declared as
> > u32 while it should be __le32.  The length variable must be CPU
> > endian, of course, as you apply C arithmetic.
> 
> So the cast shouldn't be necessary then, i.e. just simply:
> 
> unsigned int length;
> __le32 packet_length = cpu_to_le32(length);
> 
> ?
> 
> It makes sense to me (although that doesn't necessarily make it right. :-) )

Right, it's the correct usage.  The __le32 data converted via
cpu_to_le32() means just a 32bit raw data and can't be used for
arithmetic operation.  It's different from integer.  By annotation, we
can catch such failures more easily.


Takashi


More information about the Alsa-devel mailing list