> The route_table_parse() can allocate data related to the nexthop
> list. Those data need to be freed when we are done with the message.
> Make sure we call route_data_destroy() when we are done with the
> change.
>
> Fixes: 673d90f1173f ("controller: Watch for route changes.")
> Signed-off-by: Ales Musil <[email protected]>
Acked-by: Lorenzo Bianconi <[email protected]>
> ---
> controller/route-table-notify.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/controller/route-table-notify.c b/controller/route-table-notify.c
> index 1fa182ea5..9fa2e0ea6 100644
> --- a/controller/route-table-notify.c
> +++ b/controller/route-table-notify.c
> @@ -134,19 +134,22 @@ find_watch_entry(uint32_t table_id)
> static void
> route_table_change(const void *change_, void *aux OVS_UNUSED)
> {
> - /* We currently track whether at least one recent route table change
> - * was detected. If that's the case already there's no need to
> - * continue. */
> - if (any_route_table_changed) {
> + if (!change_) {
> return;
> }
>
> - const struct route_table_msg *change = change_;
> - if (change && change->rd.rtm_protocol != RTPROT_OVN) {
> + /* We currently track whether at least one recent route table change
> + * was detected. If that's the case already there's no need to
> + * continue. */
> + struct route_table_msg *change =
> + CONST_CAST(struct route_table_msg *, change_);
> + if (!any_route_table_changed && change->rd.rtm_protocol != RTPROT_OVN) {
> if (find_watch_entry(change->rd.rta_table_id)) {
> any_route_table_changed = true;
> }
> }
> +
> + route_data_destroy(&change->rd);
> }
>
> static void
> --
> 2.53.0
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev