summaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_ipv4.c
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2012-02-27 21:59:05 +0400
committerArnd Bergmann <arnd@arndb.de>2012-02-27 21:59:11 +0400
commita0008bf73c12212769b0d0b19cdec5c432de94ba (patch)
treee53c67efd4aad97ab9f2addc1fc0d62879b41c55 /net/ipv4/tcp_ipv4.c
parent5a8c271b26b83a09924c99aaa5c607021aed142b (diff)
parentcfac337b0fbcad5181096ab72bb24a05bd444562 (diff)
downloadlinux-a0008bf73c12212769b0d0b19cdec5c432de94ba.tar.xz
Merge branch 'lpc32xx/fixes-non-critical' of git://git.antcom.de/linux-2.6 into next/fixes-non-critical
* 'lpc32xx/fixes-non-critical' of git://git.antcom.de/linux-2.6: (1 commit) ARM: LPC32xx: Fix missing and bad LPC32XX macros Update to Linux 3.3-rc5 Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r--net/ipv4/tcp_ipv4.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 337ba4cca052..94d683a61cba 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -651,6 +651,11 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
arg.iov[0].iov_len, IPPROTO_TCP, 0);
arg.csumoffset = offsetof(struct tcphdr, check) / 2;
arg.flags = (sk && inet_sk(sk)->transparent) ? IP_REPLY_ARG_NOSRCCHECK : 0;
+ /* When socket is gone, all binding information is lost.
+ * routing might fail in this case. using iif for oif to
+ * make sure we can deliver it
+ */
+ arg.bound_dev_if = sk ? sk->sk_bound_dev_if : inet_iif(skb);
net = dev_net(skb_dst(skb)->dev);
arg.tos = ip_hdr(skb)->tos;