nefilter: eache: reduce struct size from 32 to 24 byte
authorFlorian Westphal <fw@strlen.de>
Tue, 18 Apr 2017 15:27:32 +0000 (17:27 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 19 Apr 2017 15:55:17 +0000 (17:55 +0200)
Only "cache" needs to use ulong (its used with set_bit()), missed can use
u16.  Also add build-time assertion to ensure event bits fit.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/net/netfilter/nf_conntrack_ecache.h
include/uapi/linux/netfilter/nf_conntrack_common.h
net/netfilter/nf_conntrack_ecache.c

index 12d967b587264af71c84d62faca95a4e7ace096f..2a10c6570fccfcd633351a3b881bff4d51e2f45c 100644 (file)
@@ -20,11 +20,11 @@ enum nf_ct_ecache_state {
 
 struct nf_conntrack_ecache {
        unsigned long cache;            /* bitops want long */
-       unsigned long missed;           /* missed events */
+       u16 missed;                     /* missed events */
        u16 ctmask;                     /* bitmask of ct events to be delivered */
        u16 expmask;                    /* bitmask of expect events to be delivered */
+       enum nf_ct_ecache_state state:8;/* ecache state */
        u32 portid;                     /* netlink portid of destroyer */
-       enum nf_ct_ecache_state state;  /* ecache state */
 };
 
 static inline struct nf_conntrack_ecache *
index b4a0a1940118fb0a9adf51b0a50c9f36846a5698..a8072cc7fa0ba6e4b4acedca37a25a4316a24159 100644 (file)
@@ -119,6 +119,9 @@ enum ip_conntrack_events {
        IPCT_NATSEQADJ = IPCT_SEQADJ,
        IPCT_SECMARK,           /* new security mark has been set */
        IPCT_LABEL,             /* new connlabel has been set */
+#ifdef __KERNEL__
+       __IPCT_MAX
+#endif
 };
 
 enum ip_conntrack_expect_events {
index 6161e92d29805fadd39be22389d3702d23e2e17d..5152129481258395d69b1315d052074aadd598d1 100644 (file)
@@ -420,6 +420,9 @@ int nf_conntrack_ecache_init(void)
        int ret = nf_ct_extend_register(&event_extend);
        if (ret < 0)
                pr_err("nf_ct_event: Unable to register event extension.\n");
+
+       BUILD_BUG_ON(__IPCT_MAX >= 16); /* ctmask, missed use u16 */
+
        return ret;
 }