|
@@ -708,10 +708,11 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
|
|
|
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
|
|
|
+ * routing might fail in this case. No choice here, if we choose to force
|
|
|
+ * input interface, we will misroute in case of asymmetric route.
|
|
|
*/
|
|
|
- arg.bound_dev_if = sk ? sk->sk_bound_dev_if : inet_iif(skb);
|
|
|
+ if (sk)
|
|
|
+ arg.bound_dev_if = sk->sk_bound_dev_if;
|
|
|
|
|
|
net = dev_net(skb_dst(skb)->dev);
|
|
|
arg.tos = ip_hdr(skb)->tos;
|