Message ID | 1345621133-23583-1-git-send-email-ljaenicke@innominate.com |
---|---|
State | Accepted, archived |
Delegated to: | stephen hemminger |
Headers | show |
diff --git a/lib/libnetlink.c b/lib/libnetlink.c index 8e8c8b9..05701ef 100644 --- a/lib/libnetlink.c +++ b/lib/libnetlink.c @@ -94,10 +94,9 @@ int rtnl_wilddump_request(struct rtnl_handle *rth, int family, int type) struct { struct nlmsghdr nlh; struct rtgenmsg g; - __u16 align_rta; /* attribute has to be 32bit aligned */ struct rtattr ext_req; __u32 ext_filter_mask; - } req; + } req __attribute__ ((aligned (NLMSG_ALIGNTO))); memset(&req, 0, sizeof(req)); req.nlh.nlmsg_len = sizeof(req);
Platforms have different alignment requirements which need to be fulfilled by the compiler. If the structure elements are already 4 byte (NLMGS_ALIGNTO) aligned by the compiler adding an explicit padding element (align_rta) is not allowed. Use __attribute__ ((aligned (NLMSG_ALIGNTO))) in order to achieve the required alignment. Experienced on ARM (xscale) with symptom netlink: 12 bytes leftover after parsing attributes Signed-off-by: Lutz Jaenicke <ljaenicke@innominate.com> --- lib/libnetlink.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)