Hi Samudrala,Sure. We can add a comment indicating that these fields are used variable sized arrays.
On Fri, Mar 26, 2021 at 11:45 PM Samudrala, Sridhar
<sridhar.samudrala@xxxxxxxxx> wrote:
On 3/26/2021 1:06 AM, Geert Uytterhoeven wrote:I don't think it is accepted practice to have non-Linux-isms in
On Thu, Mar 25, 2021 at 11:29 PM Tony Nguyen <anthony.l.nguyen@xxxxxxxxx> wrote:This header file is shared across other OSes that use C++ that doesn't support
From: Norbert Ciosek <norbertx.ciosek@xxxxxxxxx>
Remove padding from RSS structures. Previous layout
could lead to unwanted compiler optimizations
in loops when iterating over key and lut arrays.
From an earlier private conversation with Mateusz, I understand the real
explanation is that key[] and lut[] must be at the end of the
structures, because they are used as flexible array members?
Fixes: 65ece6de0114 ("virtchnl: Add missing explicit padding to structures")
Signed-off-by: Norbert Ciosek <norbertx.ciosek@xxxxxxxxx>
Tested-by: Konrad Jankowski <konrad0.jankowski@xxxxxxxxx>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
--- a/include/linux/avf/virtchnl.h
+++ b/include/linux/avf/virtchnl.h
@@ -476,7 +476,6 @@ struct virtchnl_rss_key {
u16 vsi_id;
u16 key_len;
u8 key[1]; /* RSS hash key, packed bytes */
- u8 pad[1];
};
VIRTCHNL_CHECK_STRUCT_LEN(6, virtchnl_rss_key);
@@ -485,7 +484,6 @@ struct virtchnl_rss_lut {
u16 vsi_id;
u16 lut_entries;
u8 lut[1]; /* RSS lookup table */
- u8 pad[1];
};
If you use a flexible array member, it should be declared without a size,
i.e.
u8 key[];
Everything else is (trying to) fool the compiler, and leading to undefined
behavior, and people (re)adding explicit padding.
flexible arrays. So the structures in this file use an array of size 1 as a last
element to enable variable sized arrays.
include/*linux*/avf/virtchnl.h header files. Moreover, using a size
of 1 is counter-intuitive for people used to Linux kernel development,
and may lead to off-by-one errors in calculation of sizes.
If you insist on ignoring the above, this definitely deserves a
comment next to the member's declaration.