On 12/08/2021 16:57, Harry van Haaren wrote:
> This patch fixes a memory leak in the commands for DPIF and MFEX
> get and set. In order to operate the commands require a pmd_list,
> which is currently not freed after it has been used. This issue
> was identified by a static analysis tool.
> 
> Fixes: 3d8f47bc ("dpif-netdev: Add command line and function pointer for 
> miniflow extract")
> Fixes: abb807e2 ("dpif-netdev: Add command to switch dpif implementation.")
> 
> Signed-off-by: Harry van Haaren <[email protected]>
> 

LGTM,

Acked-by: Kevin Traynor <[email protected]>

> ---
> 
> Maintainers; these mem leaks were introduced in this release,
> so are not candidates for backporting.
> ---
>  lib/dpif-netdev.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> index 9e0d5c3103..37a5839684 100644
> --- a/lib/dpif-netdev.c
> +++ b/lib/dpif-netdev.c
> @@ -1025,6 +1025,7 @@ dpif_netdev_impl_get(struct unixctl_conn *conn, int 
> argc OVS_UNUSED,
>           * thread. */
>          sorted_poll_thread_list(dp, &pmd_list, &n);
>          dp_netdev_impl_get(&reply, pmd_list, n);
> +        free(pmd_list);
>      }
>      ovs_mutex_unlock(&dp_netdev_mutex);
>      unixctl_command_reply(conn, ds_cstr(&reply));
> @@ -1079,6 +1080,8 @@ dpif_netdev_impl_set(struct unixctl_conn *conn, int 
> argc OVS_UNUSED,
>              atomic_uintptr_t *pmd_func = (void *) &pmd->netdev_input_func;
>              atomic_store_relaxed(pmd_func, (uintptr_t) default_func);
>          };
> +
> +        free(pmd_list);
>      }
>      ovs_mutex_unlock(&dp_netdev_mutex);
>  
> @@ -1109,6 +1112,7 @@ dpif_miniflow_extract_impl_get(struct unixctl_conn 
> *conn, int argc OVS_UNUSED,
>           * thread. */
>          sorted_poll_thread_list(dp, &pmd_list, &n);
>          dp_mfex_impl_get(&reply, pmd_list, n);
> +        free(pmd_list);
>      }
>      ovs_mutex_unlock(&dp_netdev_mutex);
>      unixctl_command_reply(conn, ds_cstr(&reply));
> @@ -1267,6 +1271,8 @@ dpif_miniflow_extract_impl_set(struct unixctl_conn 
> *conn, int argc,
>              atomic_uintptr_t *pmd_func = (void *) &pmd->miniflow_extract_opt;
>              atomic_store_relaxed(pmd_func, (uintptr_t) mfex_func);
>          };
> +
> +        free(pmd_list);
>      }
>  
>      ovs_mutex_unlock(&dp_netdev_mutex);
> 

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to