]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/bridge/netfilter/ebtable_broute.c
Merge git://git.infradead.org/~dedekind/ubi-2.6
[linux-2.6-omap-h63xx.git] / net / bridge / netfilter / ebtable_broute.c
index 9a6e548e148b2340cc910be1dc1a6c1284701129..246626bb0c879db5f62786b53c992d48e939f188 100644 (file)
@@ -23,7 +23,7 @@ static struct ebt_entries initial_chain = {
        .policy         = EBT_ACCEPT,
 };
 
-static struct ebt_replace initial_table =
+static struct ebt_replace_kernel initial_table =
 {
        .name           = "broute",
        .valid_hooks    = 1 << NF_BR_BROUTING,
@@ -46,16 +46,16 @@ static struct ebt_table broute_table =
        .name           = "broute",
        .table          = &initial_table,
        .valid_hooks    = 1 << NF_BR_BROUTING,
-       .lock           = RW_LOCK_UNLOCKED,
+       .lock           = __RW_LOCK_UNLOCKED(broute_table.lock),
        .check          = check,
        .me             = THIS_MODULE,
 };
 
-static int ebt_broute(struct sk_buff **pskb)
+static int ebt_broute(struct sk_buff *skb)
 {
        int ret;
 
-       ret = ebt_do_table(NF_BR_BROUTING, pskb, (*pskb)->dev, NULL,
+       ret = ebt_do_table(NF_BR_BROUTING, skb, skb->dev, NULL,
           &broute_table);
        if (ret == NF_DROP)
                return 1; /* route it */
@@ -70,13 +70,13 @@ static int __init ebtable_broute_init(void)
        if (ret < 0)
                return ret;
        /* see br_input.c */
-       br_should_route_hook = ebt_broute;
+       rcu_assign_pointer(br_should_route_hook, ebt_broute);
        return ret;
 }
 
 static void __exit ebtable_broute_fini(void)
 {
-       br_should_route_hook = NULL;
+       rcu_assign_pointer(br_should_route_hook, NULL);
        synchronize_net();
        ebt_unregister_table(&broute_table);
 }