On Fri, 16 Oct 2015 09:22:01 +0200, Ricard Wanderlof wrote:
On Fri, 16 Oct 2015, Takashi Iwai wrote:
The changes look OK, the only point to be fixed would be the use of __le32 for a variable as kbuild bot suggested.
Ok, however I interpreted the kbuild warning as that the output type of cpu_to_le32() is the same as the input type, so the resulting 'unsigned int' might not necessarily fit into the target u32 variable. So when the input type is an unsigned int, it should be cast to an u32 to be the same as the output type.
I looked around in various parts of the kernel code to see how cpu_to_le32() was used, and most cases have an u32 as the argument, and when not, the argument is simply cast to u32, i.e.
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.
Takashi