[NETFILTER]: nfnetlink_log: kill duplicate code
authorMichal Miroslaw <mirq-linux@rere.qmqm.pl>
Fri, 23 Mar 2007 18:11:05 +0000 (11:11 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 26 Apr 2007 05:27:37 +0000 (22:27 -0700)
Kill some duplicate code in nfulnl_log_packet().

Signed-off-by: Michal Miroslaw <mirq-linux@rere.qmqm.pl>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netfilter/nfnetlink_log.c

index 3b849a72d7c992094f9ea4b2be2a410e1cd5d709..d14cf514160f87787318a3d54151de7f55ddbe53 100644 (file)
@@ -660,19 +660,11 @@ nfulnl_log_packet(unsigned int pf,
                break;
 
        default:
-               spin_unlock_bh(&inst->lock);
-               instance_put(inst);
-               return;
+               goto unlock_and_release;
        }
 
-       if (!inst->skb) {
-               if (!(inst->skb = nfulnl_alloc_skb(inst->nlbufsiz, size))) {
-                       UDEBUG("error in nfulnl_alloc_skb(%u, %u)\n",
-                               inst->nlbufsiz, size);
-                       goto alloc_failure;
-               }
-       } else if (inst->qlen >= qthreshold ||
-                  size > skb_tailroom(inst->skb)) {
+       if (inst->qlen >= qthreshold ||
+           (inst->skb && size > skb_tailroom(inst->skb))) {
                /* either the queue len is too high or we don't have
                 * enough room in the skb left. flush to userspace. */
                UDEBUG("flushing old skb\n");
@@ -681,12 +673,12 @@ nfulnl_log_packet(unsigned int pf,
                if (del_timer(&inst->timer))
                        instance_put(inst);
                __nfulnl_send(inst);
+       }
 
-               if (!(inst->skb = nfulnl_alloc_skb(inst->nlbufsiz, size))) {
-                       UDEBUG("error in nfulnl_alloc_skb(%u, %u)\n",
-                               inst->nlbufsiz, size);
+       if (!inst->skb) {
+               inst->skb = nfulnl_alloc_skb(inst->nlbufsiz, size);
+               if (!inst->skb)
                        goto alloc_failure;
-               }
        }
 
        UDEBUG("qlen %d, qthreshold %d\n", inst->qlen, qthreshold);