History

netfilter: xt_nfacct: Fix alignment mismatch in xt_nfacct_match_info

When running a 64-bit kernel with a 32-bit iptables binary, the size of the xt_nfacct_match_info struct diverges. kernel: sizeof(struct xt_nfacct_match_info) : 40 iptables: sizeof(struct xt_nfacct_match_info)) : 36 Trying to append nfacct related rules results in an unhelpful message. Although it is suggested to look for more information in dmesg, nothing can be found there. # iptables -A <chain> -m nfacct --nfacct-name <acct-object> iptables: Invalid argument. Run `dmesg' for more information. This patch fixes the memory misalignment by enforcing 8-byte alignment within the struct's first revision. This solution is often used in many other uapi netfilter headers.

Juliana Rodrigueiro committed 7 years ago

Commit 89a26cd1 parent 14c41582 files · +30 −11Browse files

Showing the changes to include/uapi/linux (1 of 2 files). Show all

Unified · Split

include/uapi/linux/netfilter/xt_nfacct.h+5−0
@@ -11,4 +11,9 @@ struct xt_nfacct_match_info { · 10 unmodified lines
1111 struct nf_acct *nfacct;
1212 };
1313
14+struct xt_nfacct_match_info_v1 {
15+ char name[NFACCT_NAME_MAX];
16+ struct nf_acct *nfacct __attribute__((aligned(8)));
17+};
18+
1419 #endif /* _XT_NFACCT_MATCH_H */