On Fri, 15 Nov 2024 12:43:05 -0800 Kees Cook wrote: > struct ethtool_link_settings tends to be used as a header for other > structures that have trailing bytes[1], but has a trailing flexible array > itself. Using this overlapped with other structures leads to ambiguous > object sizing in the compiler, so we want to avoid such situations (which > have caused real bugs in the past). Detecting this can be done with > -Wflex-array-member-not-at-end, which will need to be enabled globally. > > Using a tagged struct_group() to create a new ethtool_link_settings_hdr > structure isn't possible as it seems we cannot use the tagged variant of > struct_group() due to syntax issues from C++'s perspective (even within > "extern C")[2]. Instead, we can just leave the offending member defined > in UAPI and remove it from the kernel's view of the structure, as Linux > doesn't actually use this member at all. There is also no change in > size since it was already a flexible array that didn't contribute to > size returned by any use of sizeof().
Perfect. I was starting to doubt if user space needs the member, ethtool CLI doesn't but looks like NetworkManager does. So as you say we'll cross that bridge... Reviewed-by: Jakub Kicinski <k...@kernel.org> Thanks!