Skip to content

Commit cdb8744

Browse files
KAGA-KOKOdavem330
authored andcommitted
Revert "net: do not allow changing SO_REUSEADDR/SO_REUSEPORT on bound sockets"
Revert the patch mentioned in the subject because it breaks at least the Avahi mDNS daemon. That patch namely causes the Ubuntu 18.04 Avahi daemon to fail to start: Jun 12 09:49:24 ubuntu-vm avahi-daemon[529]: Successfully called chroot(). Jun 12 09:49:24 ubuntu-vm avahi-daemon[529]: Successfully dropped remaining capabilities. Jun 12 09:49:24 ubuntu-vm avahi-daemon[529]: No service file found in /etc/avahi/services. Jun 12 09:49:24 ubuntu-vm avahi-daemon[529]: SO_REUSEADDR failed: Structure needs cleaning Jun 12 09:49:24 ubuntu-vm avahi-daemon[529]: SO_REUSEADDR failed: Structure needs cleaning Jun 12 09:49:24 ubuntu-vm avahi-daemon[529]: Failed to create server: No suitable network protocol available Jun 12 09:49:24 ubuntu-vm avahi-daemon[529]: avahi-daemon 0.7 exiting. Jun 12 09:49:24 ubuntu-vm systemd[1]: avahi-daemon.service: Main process exited, code=exited, status=255/n/a Jun 12 09:49:24 ubuntu-vm systemd[1]: avahi-daemon.service: Failed with result 'exit-code'. Jun 12 09:49:24 ubuntu-vm systemd[1]: Failed to start Avahi mDNS/DNS-SD Stack. Fixes: f396922 ("net: do not allow changing SO_REUSEADDR/SO_REUSEPORT on bound sockets") Cc: Maciej Żenczykowski <maze@google.com> Cc: Eric Dumazet <edumazet@google.com> Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 6892286 commit cdb8744

File tree

1 file changed

+1
-14
lines changed

1 file changed

+1
-14
lines changed

net/core/sock.c

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -728,22 +728,9 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
728728
sock_valbool_flag(sk, SOCK_DBG, valbool);
729729
break;
730730
case SO_REUSEADDR:
731-
val = (valbool ? SK_CAN_REUSE : SK_NO_REUSE);
732-
if ((sk->sk_family == PF_INET || sk->sk_family == PF_INET6) &&
733-
inet_sk(sk)->inet_num &&
734-
(sk->sk_reuse != val)) {
735-
ret = (sk->sk_state == TCP_ESTABLISHED) ? -EISCONN : -EUCLEAN;
736-
break;
737-
}
738-
sk->sk_reuse = val;
731+
sk->sk_reuse = (valbool ? SK_CAN_REUSE : SK_NO_REUSE);
739732
break;
740733
case SO_REUSEPORT:
741-
if ((sk->sk_family == PF_INET || sk->sk_family == PF_INET6) &&
742-
inet_sk(sk)->inet_num &&
743-
(sk->sk_reuseport != valbool)) {
744-
ret = (sk->sk_state == TCP_ESTABLISHED) ? -EISCONN : -EUCLEAN;
745-
break;
746-
}
747734
sk->sk_reuseport = valbool;
748735
break;
749736
case SO_TYPE:

0 commit comments

Comments
 (0)