diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 5a426226c762dd9e401fe7e90fde0ce2fd0e6dc6..5cb14eabfc654652f053e7a59fbbb1346b121234 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -287,7 +287,9 @@ static int rawv6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) /* Binding to link-local address requires an interface */ if (!sk->sk_bound_dev_if) goto out_unlock; + } + if (sk->sk_bound_dev_if) { err = -ENODEV; dev = dev_get_by_index_rcu(sock_net(sk), sk->sk_bound_dev_if);