From: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> Date: Sat, 2 Dec 2017 21:23:31 +0100 > From: Johannes Berg <johannes.berg@xxxxxxxxx> > > This netlink type is used only for backwards compatibility > with broken userspace that used the wrong size for a given > u8 attribute, which is now rejected. It would've been wrong > before already, since on big endian the wrong value (always > zero) would be used by the kernel, but we can't break the > existing deployed userspace - hostapd for example now fails > to initialize entirely. > > We could try to fix up the big endian problem here, but we > don't know *how* userspace misbehaved - if using nla_put_u32 > then we could, but we also found a debug tool (which we'll > ignore for the purposes of this regression) that was putting > the padding into the length. > > Fixes: 28033ae4e0f5 ("net: netlink: Update attr validation to require exact length for some types") > Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> We're stuck with this thing forever... I'd like to consider other options. I've seen this problem at least one time before, therefore I suggest when we see a U8 attribute with a U32's length: 1) We access it as a u32, this takes care of all endianness issues. 2) We emit a warning so that the app gets fixes. Thanks.