net: ipv4: use kfree_skb_reason() in ip_rcv_finish_core()
[platform/kernel/linux-rpi.git] / net / ipv4 / ip_input.c
index 7be18de..d5222c0 100644 (file)
@@ -318,8 +318,10 @@ static int ip_rcv_finish_core(struct net *net, struct sock *sk,
 {
        const struct iphdr *iph = ip_hdr(skb);
        int (*edemux)(struct sk_buff *skb);
+       int err, drop_reason;
        struct rtable *rt;
-       int err;
+
+       drop_reason = SKB_DROP_REASON_NOT_SPECIFIED;
 
        if (ip_can_use_hint(skb, iph, hint)) {
                err = ip_route_use_hint(skb, iph->daddr, iph->saddr, iph->tos,
@@ -396,19 +398,23 @@ static int ip_rcv_finish_core(struct net *net, struct sock *sk,
                 * so-called "hole-196" attack) so do it for both.
                 */
                if (in_dev &&
-                   IN_DEV_ORCONF(in_dev, DROP_UNICAST_IN_L2_MULTICAST))
+                   IN_DEV_ORCONF(in_dev, DROP_UNICAST_IN_L2_MULTICAST)) {
+                       drop_reason = SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST;
                        goto drop;
+               }
        }
 
        return NET_RX_SUCCESS;
 
 drop:
-       kfree_skb(skb);
+       kfree_skb_reason(skb, drop_reason);
        return NET_RX_DROP;
 
 drop_error:
-       if (err == -EXDEV)
+       if (err == -EXDEV) {
+               drop_reason = SKB_DROP_REASON_IP_RPFILTER;
                __NET_INC_STATS(net, LINUX_MIB_IPRPFILTER);
+       }
        goto drop;
 }