aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/af_inet6.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/af_inet6.c')
-rw-r--r--net/ipv6/af_inet6.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 6b793bfc0e10..f56277f15903 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -323,7 +323,7 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
323 struct net_device *dev = NULL; 323 struct net_device *dev = NULL;
324 324
325 rcu_read_lock(); 325 rcu_read_lock();
326 if (addr_type & IPV6_ADDR_LINKLOCAL) { 326 if (__ipv6_addr_needs_scope_id(addr_type)) {
327 if (addr_len >= sizeof(struct sockaddr_in6) && 327 if (addr_len >= sizeof(struct sockaddr_in6) &&
328 addr->sin6_scope_id) { 328 addr->sin6_scope_id) {
329 /* Override any existing binding, if another one 329 /* Override any existing binding, if another one
@@ -471,8 +471,8 @@ int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
471 471
472 sin->sin6_port = inet->inet_sport; 472 sin->sin6_port = inet->inet_sport;
473 } 473 }
474 if (ipv6_addr_type(&sin->sin6_addr) & IPV6_ADDR_LINKLOCAL) 474 sin->sin6_scope_id = ipv6_iface_scope_id(&sin->sin6_addr,
475 sin->sin6_scope_id = sk->sk_bound_dev_if; 475 sk->sk_bound_dev_if);
476 *uaddr_len = sizeof(*sin); 476 *uaddr_len = sizeof(*sin);
477 return 0; 477 return 0;
478} 478}