From b8251a4a415daeb4a5569e12816b473fae134a0c Mon Sep 17 00:00:00 2001 From: Jozsef Kadlecsik Date: Thu, 13 Oct 2016 19:38:53 +0200 Subject: Correct the reported memory size for bitmap:* types The patch "Fix extension alignmen" (c7cf6f3b) removed counting the non-dynamic extensions into the used up memory area, fixed. Signed-off-by: Jozsef Kadlecsik --- kernel/net/netfilter/ipset/ip_set_bitmap_gen.h | 9 ++++++--- kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.c | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'kernel') diff --git a/kernel/net/netfilter/ipset/ip_set_bitmap_gen.h b/kernel/net/netfilter/ipset/ip_set_bitmap_gen.h index cc89502..77dd415 100644 --- a/kernel/net/netfilter/ipset/ip_set_bitmap_gen.h +++ b/kernel/net/netfilter/ipset/ip_set_bitmap_gen.h @@ -86,9 +86,12 @@ mtype_flush(struct ip_set *set) /* Calculate the actual memory size of the set data */ static size_t -mtype_memsize(const struct mtype *map) +mtype_memsize(const struct mtype *map, size_t dsize) { - return sizeof(*map) + map->memsize; + size_t memsize = sizeof(*map) + + map->memsize + + map->elements * dsize; + return memsize; } static int @@ -96,7 +99,7 @@ mtype_head(struct ip_set *set, struct sk_buff *skb) { const struct mtype *map = set->data; struct nlattr *nested; - size_t memsize = mtype_memsize(map) + set->ext_size; + size_t memsize = mtype_memsize(map, set->dsize) + set->ext_size; nested = ipset_nest_start(skb, IPSET_ATTR_DATA); if (!nested) diff --git a/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.c b/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.c index 8eea41c..9a065f6 100644 --- a/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.c +++ b/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.c @@ -214,7 +214,7 @@ bitmap_ipmac_kadt(struct ip_set *set, const struct sk_buff *skb, { struct bitmap_ipmac *map = set->data; ipset_adtfn adtfn = set->variant->adt[adt]; - struct bitmap_ipmac_adt_elem e = { .id = 0, .add_mac = 1 }; + struct bitmap_ipmac_adt_elem e = { .id = 0, .add_mac = 1 }; struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set); u32 ip; -- cgit v1.2.3