diff options
author | Linus Torvalds | 2008-02-10 09:04:35 +0100 |
---|---|---|
committer | Linus Torvalds | 2008-02-10 09:04:35 +0100 |
commit | 25f666300625d894ebe04bac2b4b3aadb907c861 (patch) | |
tree | 47547369f2d6eb366268e85252444ecb1bdcfab5 /net/ipv4/igmp.c | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86 (diff) | |
parent | [NET_SCHED] sch_htb: htb_requeue fix (diff) | |
download | kernel-qcow2-linux-25f666300625d894ebe04bac2b4b3aadb907c861.tar.gz kernel-qcow2-linux-25f666300625d894ebe04bac2b4b3aadb907c861.tar.xz kernel-qcow2-linux-25f666300625d894ebe04bac2b4b3aadb907c861.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (28 commits)
[NET_SCHED] sch_htb: htb_requeue fix
[IPV6]: Replace using the magic constant "1024" with IP6_RT_PRIO_USER for fc_metric.
starfire: secton fix
via-velocity: section fix
natsemi: section fix
typhoon: section fix
isdn: fix section mismatch warning for ISACVer
isdn: fix section mismatch warnings from hisax_cs_setup_card
isdn: fix section mismatch warnings in isac.c and isar.c
isdn: fix section mismatch warning in hfc_sx.c
[PKT_SCHED] ematch: tcf_em_destroy robustness
[PKT_SCHED]: deinline functions in meta match
[SCTP]: Convert sctp_dbg_objcnt to seq files.
[SCTP]: Use snmp_fold_field instead of a homebrew analogue.
[IGMP]: Optimize kfree_skb in igmp_rcv.
[KEY]: Convert net/pfkey to use seq files.
[KEY]: Clean up proc files creation a bit.
pppol2tp: fix printk warnings
bnx2: section fix
bnx2x: section fix
...
Diffstat (limited to 'net/ipv4/igmp.c')
-rw-r--r-- | net/ipv4/igmp.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index 994648be80ab..732cd07e6071 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c @@ -922,13 +922,11 @@ int igmp_rcv(struct sk_buff *skb) struct in_device *in_dev = in_dev_get(skb->dev); int len = skb->len; - if (in_dev==NULL) { - kfree_skb(skb); - return 0; - } + if (in_dev == NULL) + goto drop; if (!pskb_may_pull(skb, sizeof(struct igmphdr))) - goto drop; + goto drop_ref; switch (skb->ip_summed) { case CHECKSUM_COMPLETE: @@ -938,7 +936,7 @@ int igmp_rcv(struct sk_buff *skb) case CHECKSUM_NONE: skb->csum = 0; if (__skb_checksum_complete(skb)) - goto drop; + goto drop_ref; } ih = igmp_hdr(skb); @@ -972,8 +970,9 @@ int igmp_rcv(struct sk_buff *skb) break; } -drop: +drop_ref: in_dev_put(in_dev); +drop: kfree_skb(skb); return 0; } |