aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_metrics.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_metrics.c')
-rw-r--r--net/ipv4/tcp_metrics.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c
index 52f3c6b971d2..27535fd5ea10 100644
--- a/net/ipv4/tcp_metrics.c
+++ b/net/ipv4/tcp_metrics.c
@@ -240,7 +240,6 @@ static struct tcp_metrics_block *__tcp_get_metrics_req(struct request_sock *req,
240 240
241static struct tcp_metrics_block *__tcp_get_metrics_tw(struct inet_timewait_sock *tw) 241static struct tcp_metrics_block *__tcp_get_metrics_tw(struct inet_timewait_sock *tw)
242{ 242{
243 struct inet6_timewait_sock *tw6;
244 struct tcp_metrics_block *tm; 243 struct tcp_metrics_block *tm;
245 struct inetpeer_addr addr; 244 struct inetpeer_addr addr;
246 unsigned int hash; 245 unsigned int hash;
@@ -253,9 +252,8 @@ static struct tcp_metrics_block *__tcp_get_metrics_tw(struct inet_timewait_sock
253 hash = (__force unsigned int) addr.addr.a4; 252 hash = (__force unsigned int) addr.addr.a4;
254 break; 253 break;
255 case AF_INET6: 254 case AF_INET6:
256 tw6 = inet6_twsk((struct sock *)tw); 255 *(struct in6_addr *)addr.addr.a6 = tw->tw_v6_daddr;
257 *(struct in6_addr *)addr.addr.a6 = tw6->tw_v6_daddr; 256 hash = ipv6_addr_hash(&tw->tw_v6_daddr);
258 hash = ipv6_addr_hash(&tw6->tw_v6_daddr);
259 break; 257 break;
260 default: 258 default:
261 return NULL; 259 return NULL;
@@ -289,8 +287,8 @@ static struct tcp_metrics_block *tcp_get_metrics(struct sock *sk,
289 hash = (__force unsigned int) addr.addr.a4; 287 hash = (__force unsigned int) addr.addr.a4;
290 break; 288 break;
291 case AF_INET6: 289 case AF_INET6:
292 *(struct in6_addr *)addr.addr.a6 = inet6_sk(sk)->daddr; 290 *(struct in6_addr *)addr.addr.a6 = sk->sk_v6_daddr;
293 hash = ipv6_addr_hash(&inet6_sk(sk)->daddr); 291 hash = ipv6_addr_hash(&sk->sk_v6_daddr);
294 break; 292 break;
295 default: 293 default:
296 return NULL; 294 return NULL;