net: also make sch_handle_egress() drop monitor ready
authorDaniel Borkmann <daniel@iogearbox.net>
Sun, 15 May 2016 21:28:29 +0000 (23:28 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 May 2016 18:02:44 +0000 (14:02 -0400)
Follow-up for 8a3a4c6e7b34 ("net: make sch_handle_ingress() drop
monitor ready") to also make the egress side drop monitor ready.

Also here only TC_ACT_SHOT is a clear indication that something
went wrong. Hence don't provide false positives to drop monitors
such as 'perf record -e skb:kfree_skb ...'.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c

index 12436d1312cabf1596704e70c2586f1623ce38f6..904ff431d570e3cfc0e6255480bd25f3c9dec2f3 100644 (file)
@@ -3186,12 +3186,12 @@ sch_handle_egress(struct sk_buff *skb, int *ret, struct net_device *dev)
        case TC_ACT_SHOT:
                qdisc_qstats_cpu_drop(cl->q);
                *ret = NET_XMIT_DROP;
-               goto drop;
+               kfree_skb(skb);
+               return NULL;
        case TC_ACT_STOLEN:
        case TC_ACT_QUEUED:
                *ret = NET_XMIT_SUCCESS;
-drop:
-               kfree_skb(skb);
+               consume_skb(skb);
                return NULL;
        case TC_ACT_REDIRECT:
                /* No need to push/pop skb's mac_header here on egress! */