Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: use consume_skb() in place of kfree_skb()

Remove some dropwatch/drop_monitor false positives.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Eric Dumazet and committed by
David S. Miller
5d0ba55b 4aea39c1

+14 -12
+4 -2
net/atm/lec.c
··· 231 231 if (skb_headroom(skb) < 2) { 232 232 pr_debug("reallocating skb\n"); 233 233 skb2 = skb_realloc_headroom(skb, LEC_HEADER_LEN); 234 - kfree_skb(skb); 235 - if (skb2 == NULL) 234 + if (unlikely(!skb2)) { 235 + kfree_skb(skb); 236 236 return NETDEV_TX_OK; 237 + } 238 + consume_skb(skb); 237 239 skb = skb2; 238 240 } 239 241 skb_push(skb, 2);
+1 -1
net/atm/pppoatm.c
··· 283 283 kfree_skb(n); 284 284 goto nospace; 285 285 } 286 - kfree_skb(skb); 286 + consume_skb(skb); 287 287 skb = n; 288 288 if (skb == NULL) 289 289 return DROP_PACKET;
+1 -1
net/ax25/ax25_out.c
··· 350 350 if (skb->sk != NULL) 351 351 skb_set_owner_w(skbn, skb->sk); 352 352 353 - kfree_skb(skb); 353 + consume_skb(skb); 354 354 skb = skbn; 355 355 } 356 356
+1 -1
net/ax25/ax25_route.c
··· 474 474 if (skb->sk != NULL) 475 475 skb_set_owner_w(skbn, skb->sk); 476 476 477 - kfree_skb(skb); 477 + consume_skb(skb); 478 478 479 479 skb = skbn; 480 480 }
+3 -3
net/decnet/dn_neigh.c
··· 240 240 kfree_skb(skb); 241 241 return -ENOBUFS; 242 242 } 243 - kfree_skb(skb); 243 + consume_skb(skb); 244 244 skb = skb2; 245 245 net_info_ratelimited("dn_long_output: Increasing headroom\n"); 246 246 } ··· 283 283 kfree_skb(skb); 284 284 return -ENOBUFS; 285 285 } 286 - kfree_skb(skb); 286 + consume_skb(skb); 287 287 skb = skb2; 288 288 net_info_ratelimited("dn_short_output: Increasing headroom\n"); 289 289 } ··· 322 322 kfree_skb(skb); 323 323 return -ENOBUFS; 324 324 } 325 - kfree_skb(skb); 325 + consume_skb(skb); 326 326 skb = skb2; 327 327 net_info_ratelimited("dn_phase3_output: Increasing headroom\n"); 328 328 }
+2 -2
net/ipv4/ip_output.c
··· 200 200 } 201 201 if (skb->sk) 202 202 skb_set_owner_w(skb2, skb->sk); 203 - kfree_skb(skb); 203 + consume_skb(skb); 204 204 skb = skb2; 205 205 } 206 206 ··· 709 709 710 710 IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGCREATES); 711 711 } 712 - kfree_skb(skb); 712 + consume_skb(skb); 713 713 IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGOKS); 714 714 return err; 715 715
+2 -2
net/netfilter/ipvs/ip_vs_xmit.c
··· 823 823 IP_VS_ERR_RL("%s(): no memory\n", __func__); 824 824 return NF_STOLEN; 825 825 } 826 - kfree_skb(skb); 826 + consume_skb(skb); 827 827 skb = new_skb; 828 828 old_iph = ip_hdr(skb); 829 829 } ··· 942 942 IP_VS_ERR_RL("%s(): no memory\n", __func__); 943 943 return NF_STOLEN; 944 944 } 945 - kfree_skb(skb); 945 + consume_skb(skb); 946 946 skb = new_skb; 947 947 old_iph = ipv6_hdr(skb); 948 948 }