On Sun, 2018-07-29 at 20:21 +0200, Michael Straube wrote: > On 07/29/18 19:59, Joe Perches wrote: > > On Sun, 2018-07-29 at 19:42 +0200, Michael Straube wrote: > > > On 07/29/18 19:21, Joe Perches wrote: > > > > On Sun, 2018-07-29 at 19:08 +0200, Michael Straube wrote: > > > > > Use is_broadcast_ether_addr instead of checking each byte of the > > > > > address array for 0xff. Shortens the code and improves readability. > > > > > > > > You should show in the commit log that sta_addr is __aligned(2) > > > > as required by is_broadcast_ether_addr, otherwise you could be > > > > introducing runtime alignment defects. > > > > > > > > > > Ok, sta_addr is used from following structs. > > > > > > struct ieee_param { > > > u32 cmd; > > > u8 sta_addr[ETH_ALEN]; > > > union { > > > ... > > > ... > > > }; u > > > }; > > > > > > struct ieee_param_ex { > > > u32 cmd; > > > u8 sta_addr[ETH_ALEN]; > > > u8 data[0]; > > > }; > > > > > > Well, looking at it now, I'm not sure about the alignment anymore > > > in the struct that contains the union. Is sta_addr in the first > > > struct __aligned(2)? > > > > > > Should I include the snippets in the commit message, or is just > > > writing that sta_addr is __aligned(2) enough? (if it is in the > > > first case...) > > > > It's enough to just state that the uses are properly aligned > > as long as you looked and understand that it's required. > > > > Ok, thank you. > > I looked at it and understand that it's required. > But, as mentioned, at second look I'm not sure about the union. > > I guess I need to read a little more about the alignment of unions. > Any hints are welcomed. :) The union doesn't matter here. Only the locations of sta_addr matter. Both follow a u32, so they are also aligned to a u32. That is actually not guaranteed by the c standard as the u8 array could have arbitrary padding bytes inserted between the u32, but no compiler used by the kernel does that. _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel