Listen socket is not an established TCP connection, so
setsockopt(TCP_AO_REPAIR) doesn't have any impact.
Restrict this uAPI for listen sockets.
Fixes: faadfaba5e01 ("net/tcp: Add TCP_AO_REPAIR")
Signed-off-by: Dmitry Safonov <dima@arista.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
                break;
 
        case TCP_AO_REPAIR:
+               if (!tcp_can_repair_sock(sk)) {
+                       err = -EPERM;
+                       break;
+               }
                err = tcp_ao_set_repair(sk, optval, optlen);
                break;
 #ifdef CONFIG_TCP_AO
        }
 #endif
        case TCP_AO_REPAIR:
+               if (!tcp_can_repair_sock(sk))
+                       return -EPERM;
                return tcp_ao_get_repair(sk, optval, optlen);
        case TCP_AO_GET_KEYS:
        case TCP_AO_INFO: {