diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-07-20 19:26:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-07-20 19:26:42 -0400 |
commit | 516bd664153d76f5c814633cee6500e2ff8e861b (patch) | |
tree | f67a1c70b013961849d3491ef22596cd0b0d9af9 /net/ipv4/ipmr.c | |
parent | 844b9a8707f1fcf0482e0c52f44a555e799ccda6 (diff) | |
parent | 573201f36fd9c7c6d5218cdcd9948cee700b277d (diff) |
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: (24 commits)
bridge: Partially disable netpoll support
tcp: fix crash in tcp_xmit_retransmit_queue
IPv6: fix CoA check in RH2 input handler (mip6_rthdr_input())
ibmveth: lost IRQ while closing/opening device leads to service loss
rt2x00: Fix lockdep warning in rt2x00lib_probe_dev()
vhost: avoid pr_err on condition guest can trigger
ipmr: Don't leak memory if fib lookup fails.
vhost-net: avoid flush under lock
net: fix problem in reading sock TX queue
net/core: neighbour update Oops
net: skb_tx_hash() fix relative to skb_orphan_try()
rfs: call sock_rps_record_flow() in tcp_splice_read()
xfrm: do not assume that template resolving always returns xfrms
hostap_pci: set dev->base_addr during probe
axnet_cs: use spin_lock_irqsave in ax_interrupt
dsa: Fix Kconfig dependencies.
act_nat: not all of the ICMP packets need an IP header payload
r8169: incorrect identifier for a 8168dp
Phonet: fix skb leak in pipe endpoint accept()
Bluetooth: Update sec_level/auth_type for already existing connections
...
Diffstat (limited to 'net/ipv4/ipmr.c')
-rw-r--r-- | net/ipv4/ipmr.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index 757f25eb9b4b..7f6273506eea 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c | |||
@@ -442,8 +442,10 @@ static netdev_tx_t reg_vif_xmit(struct sk_buff *skb, struct net_device *dev) | |||
442 | int err; | 442 | int err; |
443 | 443 | ||
444 | err = ipmr_fib_lookup(net, &fl, &mrt); | 444 | err = ipmr_fib_lookup(net, &fl, &mrt); |
445 | if (err < 0) | 445 | if (err < 0) { |
446 | kfree_skb(skb); | ||
446 | return err; | 447 | return err; |
448 | } | ||
447 | 449 | ||
448 | read_lock(&mrt_lock); | 450 | read_lock(&mrt_lock); |
449 | dev->stats.tx_bytes += skb->len; | 451 | dev->stats.tx_bytes += skb->len; |
@@ -1728,8 +1730,10 @@ int ip_mr_input(struct sk_buff *skb) | |||
1728 | goto dont_forward; | 1730 | goto dont_forward; |
1729 | 1731 | ||
1730 | err = ipmr_fib_lookup(net, &skb_rtable(skb)->fl, &mrt); | 1732 | err = ipmr_fib_lookup(net, &skb_rtable(skb)->fl, &mrt); |
1731 | if (err < 0) | 1733 | if (err < 0) { |
1734 | kfree_skb(skb); | ||
1732 | return err; | 1735 | return err; |
1736 | } | ||
1733 | 1737 | ||
1734 | if (!local) { | 1738 | if (!local) { |
1735 | if (IPCB(skb)->opt.router_alert) { | 1739 | if (IPCB(skb)->opt.router_alert) { |