On Thu, May 4, 2023 at 1:35 PM Tao Liu <[email protected]> wrote:

> In vxlan mode with more than 2047 lrp in router, build_ports()
> prints "all port tunnel ids exhausted", and frees the lrp port.
>
> However, lsp of type "router" connected to the lrp still holds
> the pointer in port->peer. This leads to northd crash in
> build_lflows().
>
> CallTrace:
>   build_lswitch_rport_arp_req_flows
>   build_lswitch_ip_unicast_lookup
>   build_lswitch_and_lrouter_iterate_by_op
>   build_lflows
>   en_lflow_run
>   engine_recompute
>   engine_run
>   inc_proc_northd_run
>   main
>
> Fixes: 3044132261d3 ("northd: Enhance implementation of port tunnel key
> requests.")
> Signed-off-by: Tao Liu <[email protected]>
> ---
> v2: clear port->peer->peer in ovn_port_destroy().
> ---
>  northd/northd.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/northd/northd.c b/northd/northd.c
> index c10e5c20c..5e737bbba 100644
> --- a/northd/northd.c
> +++ b/northd/northd.c
> @@ -1676,6 +1676,10 @@ ovn_port_destroy(struct hmap *ports, struct
> ovn_port *port)
>           * use it. */
>          hmap_remove(ports, &port->key_node);
>
> +        if (port->peer) {
> +            port->peer->peer = NULL;
> +        }
> +
>          for (int i = 0; i < port->n_lsp_addrs; i++) {
>              destroy_lport_addresses(&port->lsp_addrs[i]);
>          }
> --
> 2.31.1
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
Looks good to me, thanks.

Acked-by: Ales Musil <[email protected]>

-- 

Ales Musil

Senior Software Engineer - OVN Core

Red Hat EMEA <https://www.redhat.com>

[email protected]    IM: amusil
<https://red.ht/sig>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to