(!sk->sk_bound_dev_if ||
                     !sk2->sk_bound_dev_if ||
                     sk->sk_bound_dev_if == sk2->sk_bound_dev_if)) {
-                       const __be32 sk2_rcv_saddr = inet_rcv_saddr(sk2);
-
                        if (!reuse || !sk2->sk_reuse ||
                            sk2->sk_state == TCP_LISTEN) {
+                               const __be32 sk2_rcv_saddr = inet_rcv_saddr(sk2);
                                if (!sk2_rcv_saddr || !sk_rcv_saddr ||
                                    sk2_rcv_saddr == sk_rcv_saddr)
                                        break;
-                       } else if (reuse && sk2->sk_reuse &&
-                                  sk2_rcv_saddr &&
-                                  sk2_rcv_saddr == sk_rcv_saddr)
-                               break;
+                       }
                }
        }
        return node != NULL;
                                                smallest_size = tb->num_owners;
                                                smallest_rover = rover;
                                                if (atomic_read(&hashinfo->bsockets) > (high - low) + 1) {
-                                                       if (!inet_csk(sk)->icsk_af_ops->bind_conflict(sk, tb)) {
-                                                               spin_unlock(&head->lock);
-                                                               snum = smallest_rover;
-                                                               goto have_snum;
-                                                       }
+                                                       spin_unlock(&head->lock);
+                                                       snum = smallest_rover;
+                                                       goto have_snum;
                                                }
                                        }
                                        goto next;
 
                if (sk != sk2 &&
                    (!sk->sk_bound_dev_if ||
                     !sk2->sk_bound_dev_if ||
-                    sk->sk_bound_dev_if == sk2->sk_bound_dev_if)) {
-                       if ((!sk->sk_reuse || !sk2->sk_reuse ||
-                            sk2->sk_state == TCP_LISTEN) &&
-                            ipv6_rcv_saddr_equal(sk, sk2))
-                               break;
-                       else if (sk->sk_reuse && sk2->sk_reuse &&
-                               !ipv6_addr_any(inet6_rcv_saddr(sk)) &&
-                               ipv6_rcv_saddr_equal(sk, sk2))
-                               break;
-               }
+                    sk->sk_bound_dev_if == sk2->sk_bound_dev_if) &&
+                   (!sk->sk_reuse || !sk2->sk_reuse ||
+                    sk2->sk_state == TCP_LISTEN) &&
+                    ipv6_rcv_saddr_equal(sk, sk2))
+                       break;
        }
 
        return node != NULL;