[IGMP]: Optimize kfree_skb in igmp_rcv.

Merge error paths inside igmp_rcv.

Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Denis V. Lunev and committed by
David S. Miller
cd557bc1 bd2f7476

+6 -7
+6 -7
net/ipv4/igmp.c
··· 922 922 struct in_device *in_dev = in_dev_get(skb->dev); 923 923 int len = skb->len; 924 924 925 - if (in_dev==NULL) { 926 - kfree_skb(skb); 927 - return 0; 928 - } 925 + if (in_dev == NULL) 926 + goto drop; 929 927 930 928 if (!pskb_may_pull(skb, sizeof(struct igmphdr))) 931 - goto drop; 929 + goto drop_ref; 932 930 933 931 switch (skb->ip_summed) { 934 932 case CHECKSUM_COMPLETE: ··· 936 938 case CHECKSUM_NONE: 937 939 skb->csum = 0; 938 940 if (__skb_checksum_complete(skb)) 939 - goto drop; 941 + goto drop_ref; 940 942 } 941 943 942 944 ih = igmp_hdr(skb); ··· 970 972 break; 971 973 } 972 974 973 - drop: 975 + drop_ref: 974 976 in_dev_put(in_dev); 977 + drop: 975 978 kfree_skb(skb); 976 979 return 0; 977 980 }