netfilter: pass 'nf_hook_ops' instead of 'list_head' to nf_queue()
authorMichael Wang <wangyun@linux.vnet.ibm.com>
Wed, 22 Aug 2012 20:00:06 +0000 (20:00 +0000)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 3 Sep 2012 11:52:54 +0000 (13:52 +0200)
Since 'list_for_each_continue_rcu' has already been replaced by
'list_for_each_entry_continue_rcu', pass 'list_head' to nf_queue() as a
parameter can not benefit us any more.

This patch will replace 'list_head' with 'nf_hook_ops' as the parameter of
nf_queue() and __nf_queue() to save code.

Signed-off-by: Michael Wang <wangyun@linux.vnet.ibm.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/core.c
net/netfilter/nf_internals.h
net/netfilter/nf_queue.c

index 0b119d94c31a961d254e50df080051201fb1ec1b..68912dadf13d15c0354bec108039176b9659c75a 100644 (file)
@@ -189,8 +189,8 @@ next_hook:
                if (ret == 0)
                        ret = -EPERM;
        } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE) {
-               int err = nf_queue(skb, &elem->list, pf, hook, indev, outdev,
-                                       okfn, verdict >> NF_VERDICT_QBITS);
+               int err = nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
+                                               verdict >> NF_VERDICT_QBITS);
                if (err < 0) {
                        if (err == -ECANCELED)
                                goto next_hook;
index 2886231d20a88ada2d0d64f68915360e9f134d5c..3deec997be89e32770750abc504922761d096935 100644 (file)
@@ -24,7 +24,7 @@ extern unsigned int nf_iterate(struct list_head *head,
 
 /* nf_queue.c */
 extern int nf_queue(struct sk_buff *skb,
-                   struct list_head *elem,
+                   struct nf_hook_ops *elem,
                    u_int8_t pf, unsigned int hook,
                    struct net_device *indev,
                    struct net_device *outdev,
index 29fe102d3436935151b0f088e526ffc1af8b4553..8d2cf9ec37a850951648640728ab1ad6d8f53e6d 100644 (file)
@@ -118,7 +118,7 @@ static void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
  * through nf_reinject().
  */
 static int __nf_queue(struct sk_buff *skb,
-                     struct list_head *elem,
+                     struct nf_hook_ops *elem,
                      u_int8_t pf, unsigned int hook,
                      struct net_device *indev,
                      struct net_device *outdev,
@@ -155,7 +155,7 @@ static int __nf_queue(struct sk_buff *skb,
 
        *entry = (struct nf_queue_entry) {
                .skb    = skb,
-               .elem   = list_entry(elem, struct nf_hook_ops, list),
+               .elem   = elem,
                .pf     = pf,
                .hook   = hook,
                .indev  = indev,
@@ -225,7 +225,7 @@ static void nf_bridge_adjust_segmented_data(struct sk_buff *skb)
 #endif
 
 int nf_queue(struct sk_buff *skb,
-            struct list_head *elem,
+            struct nf_hook_ops *elem,
             u_int8_t pf, unsigned int hook,
             struct net_device *indev,
             struct net_device *outdev,
@@ -323,7 +323,7 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict)
                local_bh_enable();
                break;
        case NF_QUEUE:
-               err = __nf_queue(skb, &elem->list, entry->pf, entry->hook,
+               err = __nf_queue(skb, elem, entry->pf, entry->hook,
                                 entry->indev, entry->outdev, entry->okfn,
                                 verdict >> NF_VERDICT_QBITS);
                if (err < 0) {