Skip to content

Commit 6d5c900

Browse files
keesSaeed Mahameed
authored andcommitted
net/mlx5e: Use struct_group() for memcpy() region
In preparation for FORTIFY_SOURCE performing compile-time and run-time field bounds checking for memcpy(), memmove(), and memset(), avoid intentionally writing across neighboring fields. Use struct_group() in struct vlan_ethhdr around members h_dest and h_source, so they can be referenced together. This will allow memcpy() and sizeof() to more easily reason about sizes, improve readability, and avoid future warnings about writing beyond the end of h_dest. "pahole" shows no size nor member offset changes to struct vlan_ethhdr. "objdump -d" shows no object code changes. Fixes: 34802a4 ("net/mlx5e: Do not modify the TX SKB") Signed-off-by: Kees Cook <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent 5b209d1 commit 6d5c900

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_tx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ static inline void mlx5e_insert_vlan(void *start, struct sk_buff *skb, u16 ihs)
208208
int cpy1_sz = 2 * ETH_ALEN;
209209
int cpy2_sz = ihs - cpy1_sz;
210210

211-
memcpy(vhdr, skb->data, cpy1_sz);
211+
memcpy(&vhdr->addrs, skb->data, cpy1_sz);
212212
vhdr->h_vlan_proto = skb->vlan_proto;
213213
vhdr->h_vlan_TCI = cpu_to_be16(skb_vlan_tag_get(skb));
214214
memcpy(&vhdr->h_vlan_encapsulated_proto, skb->data + cpy1_sz, cpy2_sz);

include/linux/if_vlan.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ struct vlan_hdr {
4646
* @h_vlan_encapsulated_proto: packet type ID or len
4747
*/
4848
struct vlan_ethhdr {
49-
unsigned char h_dest[ETH_ALEN];
50-
unsigned char h_source[ETH_ALEN];
49+
struct_group(addrs,
50+
unsigned char h_dest[ETH_ALEN];
51+
unsigned char h_source[ETH_ALEN];
52+
);
5153
__be16 h_vlan_proto;
5254
__be16 h_vlan_TCI;
5355
__be16 h_vlan_encapsulated_proto;

0 commit comments

Comments
 (0)