Hi Chengwen, Thanks for reviewing. The memory leak occurs similar as what mentioned in https://patches.dpdk.org/project/dpdk/patch/20230705092511.362484-2-wenjun1...@intel.com/. I will perfect the commit description in V2 version.
Thanks, Wenjun > -----Original Message----- > From: fengchengwen <fengcheng...@huawei.com> > Sent: Thursday, July 6, 2023 9:02 AM > To: Wu, Wenjun1 <wenjun1...@intel.com>; dev@dpdk.org; Burakov, > Anatoly <anatoly.bura...@intel.com>; Zhang, Qi Z <qi.z.zh...@intel.com> > Cc: Su, Simei <simei...@intel.com>; sta...@dpdk.org > Subject: Re: [PATCH v1 2/2] examples/multi_process: fix memory leak > > On 2023/7/5 17:25, Wenjun Wu wrote: > > The device should be detached before quit, otherwise it will cause > > memory leak. > > Which memory will leak? > > For mp, if secondary process quit, it only needs to properly handle the > memory shared with other process. > > > > > Fixes: 05f1d6842fc3 ("examples/multi_process: add hotplug sample") > > Cc: sta...@dpdk.org > > > > Signed-off-by: Wenjun Wu <wenjun1...@intel.com> > > --- > > examples/multi_process/hotplug_mp/commands.c | 22 > > ++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/examples/multi_process/hotplug_mp/commands.c > > b/examples/multi_process/hotplug_mp/commands.c > > index 88f44e00a0..143d57eeb6 100644 > > --- a/examples/multi_process/hotplug_mp/commands.c > > +++ b/examples/multi_process/hotplug_mp/commands.c > > @@ -52,6 +52,28 @@ static void cmd_quit_parsed(__rte_unused void > *parsed_result, > > struct cmdline *cl, > > __rte_unused void *data) > > { > > + uint16_t port_id; > > + char dev_name[RTE_DEV_NAME_MAX_LEN]; > > + struct rte_devargs da; > > + > > + RTE_ETH_FOREACH_DEV(port_id) { > > + rte_eth_dev_get_name_by_port(port_id, dev_name); > > + memset(&da, 0, sizeof(da)); > > + > > + if (rte_devargs_parsef(&da, "%s", dev_name)) { > > + cmdline_printf(cl, > > + "cannot parse devargs for device %s\n", > > + dev_name); > > + } > > + printf("detaching before quit...\n"); > > + if (!rte_eal_hotplug_remove(rte_bus_name(da.bus), > da.name)) > > + cmdline_printf(cl, "detached device %s\n", > > + da.name); > > + else > > + cmdline_printf(cl, "failed to detach device %s\n", > > + da.name); > > + > > + } > > cmdline_quit(cl); > > } > > > >