diff options
| -rw-r--r-- | net/netfilter/ipvs/ip_vs_xmit.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c index 5d393c5a802d..3f3e0f4c38a5 100644 --- a/net/netfilter/ipvs/ip_vs_xmit.c +++ b/net/netfilter/ipvs/ip_vs_xmit.c | |||
| @@ -110,6 +110,7 @@ __ip_vs_get_out_rt(struct sk_buff *skb, struct ip_vs_dest *dest, | |||
| 110 | &dest->addr.ip, | 110 | &dest->addr.ip, |
| 111 | atomic_read(&rt->dst.__refcnt), rtos); | 111 | atomic_read(&rt->dst.__refcnt), rtos); |
| 112 | } | 112 | } |
| 113 | daddr = dest->addr.ip; | ||
| 113 | spin_unlock(&dest->dst_lock); | 114 | spin_unlock(&dest->dst_lock); |
| 114 | } else { | 115 | } else { |
| 115 | rt = ip_route_output(net, daddr, 0, rtos, 0); | 116 | rt = ip_route_output(net, daddr, 0, rtos, 0); |
| @@ -125,7 +126,7 @@ __ip_vs_get_out_rt(struct sk_buff *skb, struct ip_vs_dest *dest, | |||
| 125 | rt_mode)) { | 126 | rt_mode)) { |
| 126 | IP_VS_DBG_RL("Stopping traffic to %s address, dest: %pI4\n", | 127 | IP_VS_DBG_RL("Stopping traffic to %s address, dest: %pI4\n", |
| 127 | (rt->rt_flags & RTCF_LOCAL) ? | 128 | (rt->rt_flags & RTCF_LOCAL) ? |
| 128 | "local":"non-local", &rt->rt_dst); | 129 | "local":"non-local", &daddr); |
| 129 | ip_rt_put(rt); | 130 | ip_rt_put(rt); |
| 130 | return NULL; | 131 | return NULL; |
| 131 | } | 132 | } |
| @@ -133,14 +134,14 @@ __ip_vs_get_out_rt(struct sk_buff *skb, struct ip_vs_dest *dest, | |||
| 133 | !((ort = skb_rtable(skb)) && ort->rt_flags & RTCF_LOCAL)) { | 134 | !((ort = skb_rtable(skb)) && ort->rt_flags & RTCF_LOCAL)) { |
| 134 | IP_VS_DBG_RL("Redirect from non-local address %pI4 to local " | 135 | IP_VS_DBG_RL("Redirect from non-local address %pI4 to local " |
| 135 | "requires NAT method, dest: %pI4\n", | 136 | "requires NAT method, dest: %pI4\n", |
| 136 | &ip_hdr(skb)->daddr, &rt->rt_dst); | 137 | &ip_hdr(skb)->daddr, &daddr); |
| 137 | ip_rt_put(rt); | 138 | ip_rt_put(rt); |
| 138 | return NULL; | 139 | return NULL; |
| 139 | } | 140 | } |
| 140 | if (unlikely(!local && ipv4_is_loopback(ip_hdr(skb)->saddr))) { | 141 | if (unlikely(!local && ipv4_is_loopback(ip_hdr(skb)->saddr))) { |
| 141 | IP_VS_DBG_RL("Stopping traffic from loopback address %pI4 " | 142 | IP_VS_DBG_RL("Stopping traffic from loopback address %pI4 " |
| 142 | "to non-local address, dest: %pI4\n", | 143 | "to non-local address, dest: %pI4\n", |
| 143 | &ip_hdr(skb)->saddr, &rt->rt_dst); | 144 | &ip_hdr(skb)->saddr, &daddr); |
| 144 | ip_rt_put(rt); | 145 | ip_rt_put(rt); |
| 145 | return NULL; | 146 | return NULL; |
| 146 | } | 147 | } |
