* [PATCH v1] bonding,llc: Fix structure sizeof incompatibility for some PDUs
@ 2011-05-13 9:04 Vitalii Demianets
2011-05-13 19:15 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Vitalii Demianets @ 2011-05-13 9:04 UTC (permalink / raw)
To: netdev
Cc: bonding-devel, David Miller, Eric Dumazet, Ben Hutchings,
Joe Perches, Jay Vosburgh, Andy Gospodarek,
Arnaldo Carvalho de Melo
With some combinations of arch/compiler (e.g. arm-linux-gcc) the sizeof
operator on structure returns value greater than expected. In cases when the
structure is used for mapping PDU fields it may lead to unexpected results
(such as holes and alignment problems in skb data). __packed prevents this
undesired behavior.
Signed-off-by: Vitalii Demianets <vitas@nppfactor.kiev.ua>
---
v1: use __packed macro instead of __attribute__((packed))
---
drivers/net/bonding/bond_3ad.h | 10 +++++-----
include/net/llc_pdu.h | 8 ++++----
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/bonding/bond_3ad.h b/drivers/net/bonding/bond_3ad.h
index 291dbd4..0ee3f16 100644
--- a/drivers/net/bonding/bond_3ad.h
+++ b/drivers/net/bonding/bond_3ad.h
@@ -39,7 +39,7 @@
typedef struct mac_addr {
u8 mac_addr_value[ETH_ALEN];
-} mac_addr_t;
+} __packed mac_addr_t;
enum {
BOND_AD_STABLE = 0,
@@ -134,12 +134,12 @@ typedef struct lacpdu {
u8 tlv_type_terminator; // = terminator
u8 terminator_length; // = 0
u8 reserved_50[50]; // = 0
-} lacpdu_t;
+} __packed lacpdu_t;
typedef struct lacpdu_header {
struct ethhdr hdr;
struct lacpdu lacpdu;
-} lacpdu_header_t;
+} __packed lacpdu_header_t;
// Marker Protocol Data Unit(PDU) structure(43.5.3.2 in the 802.3ad standard)
typedef struct bond_marker {
@@ -155,12 +155,12 @@ typedef struct bond_marker {
u8 tlv_type_terminator; // = 0x00
u8 terminator_length; // = 0x00
u8 reserved_90[90]; // = 0
-} bond_marker_t;
+} __packed bond_marker_t;
typedef struct bond_marker_header {
struct ethhdr hdr;
struct bond_marker marker;
-} bond_marker_header_t;
+} __packed bond_marker_header_t;
#pragma pack()
diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h
index 75b8e29..f57e7d4 100644
--- a/include/net/llc_pdu.h
+++ b/include/net/llc_pdu.h
@@ -199,7 +199,7 @@ struct llc_pdu_sn {
u8 ssap;
u8 ctrl_1;
u8 ctrl_2;
-};
+} __packed;
static inline struct llc_pdu_sn *llc_pdu_sn_hdr(struct sk_buff *skb)
{
@@ -211,7 +211,7 @@ struct llc_pdu_un {
u8 dsap;
u8 ssap;
u8 ctrl_1;
-};
+} __packed;
static inline struct llc_pdu_un *llc_pdu_un_hdr(struct sk_buff *skb)
{
@@ -359,7 +359,7 @@ struct llc_xid_info {
u8 fmt_id; /* always 0x81 for LLC */
u8 type; /* different if NULL/non-NULL LSAP */
u8 rw; /* sender receive window */
-};
+} __packed;
/**
* llc_pdu_init_as_xid_cmd - sets bytes 3, 4 & 5 of LLC header as XID
@@ -415,7 +415,7 @@ struct llc_frmr_info {
u8 curr_ssv; /* current send state variable val */
u8 curr_rsv; /* current receive state variable */
u8 ind_bits; /* indicator bits set with macro */
-};
+} __packed;
extern void llc_pdu_set_cmd_rsp(struct sk_buff *skb, u8 type);
extern void llc_pdu_set_pf_bit(struct sk_buff *skb, u8 bit_value);
--
1.7.3.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v1] bonding,llc: Fix structure sizeof incompatibility for some PDUs
2011-05-13 9:04 [PATCH v1] bonding,llc: Fix structure sizeof incompatibility for some PDUs Vitalii Demianets
@ 2011-05-13 19:15 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2011-05-13 19:15 UTC (permalink / raw)
To: vitas
Cc: netdev, bonding-devel, eric.dumazet, bhutchings, joe, fubar, andy,
acme
From: Vitalii Demianets <vitas@nppfactor.kiev.ua>
Date: Fri, 13 May 2011 12:04:29 +0300
> With some combinations of arch/compiler (e.g. arm-linux-gcc) the sizeof
> operator on structure returns value greater than expected. In cases when the
> structure is used for mapping PDU fields it may lead to unexpected results
> (such as holes and alignment problems in skb data). __packed prevents this
> undesired behavior.
>
> Signed-off-by: Vitalii Demianets <vitas@nppfactor.kiev.ua>
Applied, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-05-13 19:16 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-13 9:04 [PATCH v1] bonding,llc: Fix structure sizeof incompatibility for some PDUs Vitalii Demianets
2011-05-13 19:15 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).