]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv4/netfilter/arp_tables.c
Merge branch 'fix/hda' into topic/hda
[linux-2.6-omap-h63xx.git] / net / ipv4 / netfilter / arp_tables.c
index b3238d0101ccb918d82eeeef560f70d333b9eab5..8d70d29f1ccf8b7664829f3c83a1e5cd4c579062 100644 (file)
@@ -246,6 +246,7 @@ unsigned int arpt_do_table(struct sk_buff *skb,
        tgpar.in      = in;
        tgpar.out     = out;
        tgpar.hooknum = hook;
+       tgpar.family  = NFPROTO_ARP;
 
        arp = arp_hdr(skb);
        do {
@@ -465,10 +466,10 @@ static inline int check_target(struct arpt_entry *e, const char *name)
                .target    = t->u.kernel.target,
                .targinfo  = t->data,
                .hook_mask = e->comefrom,
+               .family    = NFPROTO_ARP,
        };
 
-       ret = xt_check_target(&par, NFPROTO_ARP,
-             t->u.target_size - sizeof(*t), 0, false);
+       ret = xt_check_target(&par, t->u.target_size - sizeof(*t), 0, false);
        if (ret < 0) {
                duprintf("arp_tables: check failed for `%s'.\n",
                         t->u.kernel.target->name);
@@ -557,15 +558,19 @@ static inline int check_entry_size_and_hooks(struct arpt_entry *e,
 
 static inline int cleanup_entry(struct arpt_entry *e, unsigned int *i)
 {
+       struct xt_tgdtor_param par;
        struct arpt_entry_target *t;
 
        if (i && (*i)-- == 0)
                return 1;
 
        t = arpt_get_target(e);
-       if (t->u.kernel.target->destroy)
-               t->u.kernel.target->destroy(t->u.kernel.target, t->data);
-       module_put(t->u.kernel.target->me);
+       par.target   = t->u.kernel.target;
+       par.targinfo = t->data;
+       par.family   = NFPROTO_ARP;
+       if (par.target->destroy != NULL)
+               par.target->destroy(&par);
+       module_put(par.target->me);
        return 0;
 }