>-----Original Message----- >From: Ferruh Yigit <ferruh.yi...@intel.com> >Sent: 14 फरवरी 2022 23:03 >To: Madhuker Mythri <madhuker.myt...@oracle.com> >Cc: dev@dpdk.org; Gaetan Rivet <gr...@u256.net>; Thomas Monjalon ><tho...@monjalon.net>; David Marchand <david.march...@redhat.com> >Subject: [External] : Re: [PATCH] devargs: Fix crash due to global devargs >uninitailization from secondary process > >On 2/14/2022 5:08 PM, madhuker.myt...@oracle.com wrote: >> From: Madhuker Mythri <madhuker.myt...@oracle.com> >> >> Failsafe pmd started crashing with global devargs syntax as devargs is >> not memset to zero. Access it to in rte_devargs_parse() resulted in a >> crash when called from secondary process. >> >> Bugzilla Id: 933 >> >> Signed-off-by: Madhuker Mythri <madhuker.myt...@oracle.com> > >This is duplication of Gaetan's patch: >https://urldefense.com/v3/__https://patches.dpdk.org/project/dpdk/patch/20220210170131.2199922-1->gr...@u256.net/__;!!ACWV5N9M2RV99hQ!aE5DMiBds1eptcxnoYR6KWszXGgqYHaQduFAfUDwH4ps-h0eJIQ5Wk2JBZGMFh5DBZSZ$ >
Hi Ferruh, Initially, I had filed this bug: https://bugs.dpdk.org/show_bug.cgi?id=933 , as part of the testing on Azure/Hyper-V platforms. After analysis, found the root-cause of this crash is due to global devargs un-initialization in failsafe-pmd probe() and published the patch as follows: https://patchwork.dpdk.org/project/dpdk/patch/20220210071052.527-1-madhuker.myt...@oracle.com/ From your review comments got to know, that we can memset inside the rte_devargs_parse(), instead of setting outside before this API call. Got delayed in testing the same code changes on Azure/Hyper-V platforms and publishing this patch. So, please consider this patch, as I had found the root-cause of this issue and tested on affected platforms. Thanks, Madhuker. >> --- >> lib/eal/common/eal_common_devargs.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/lib/eal/common/eal_common_devargs.c >> b/lib/eal/common/eal_common_devargs.c >> index 69004b0a2d..ad60febad9 100644 >> --- a/lib/eal/common/eal_common_devargs.c >> +++ b/lib/eal/common/eal_common_devargs.c >> @@ -190,6 +190,7 @@ rte_devargs_parse(struct rte_devargs *da, const >> char *dev) >> >> if (da == NULL) >> return -EINVAL; >> + memset(da, 0, sizeof(*da)); >> >> /* First parse according global device syntax. */ >> if (rte_devargs_layers_parse(da, dev) == 0) {