From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ferruh Yigit Subject: Re: [PATCH] drivers/net/pcap: fix segfault in pcap pmd Date: Thu, 26 May 2016 18:57:16 +0100 Message-ID: <574738FC.2080604@intel.com> References: <1464269755-26123-1-git-send-email-reshma.pattan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable To: Reshma Pattan , dev@dpdk.org Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 050793772 for ; Thu, 26 May 2016 19:57:18 +0200 (CEST) In-Reply-To: <1464269755-26123-1-git-send-email-reshma.pattan@intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 5/26/2016 2:35 PM, Reshma Pattan wrote: > Testpmd application will crash in fclose() upon quit after running > the below command. >=20 > "sudo gdb --args ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf0 -n 4 = --vdev > 'eth_pcap0,tx_iface=3Denp1s0f1,rx_pcap=3D/tmp/test.pcap' -- --port-topo= logy=3Dchained -i" checkpatch complain about long line (> 75 chars) >=20 > The reason is, pcap vdev creation with tx stream type as "iface" as in = above > command dont need member ''dumpers'' of "struct tx_pcaps", hence will n= ot have s/dont/don't, s/''/" > memory allocated. But contains a garbage values, as local object of str= uct tx_pcaps > is not initialized to 0 inside rte_pmd_pcap_dev_init(). So calling pcap= _dump_close() on > dumper as part of eth_dev_stop() is causing segfault in fclose(). >=20 > Fix is to initilize local object of struct tx_pcaps to 0. s/initilize/initialize > Also initiliaze local object of stcruct rx_pcaps to 0. s/initiliaze/initialize, s/stcruct/struct >=20 > So during eth_dev_stop(), pcap_dump_close() will not be called if dumpe= r is NULL. >=20 > Fixes:4c173302("pcap: add new driver") >=20 > Signed-off-by: Reshma Pattan > --- > drivers/net/pcap/rte_eth_pcap.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) >=20 > diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth= _pcap.c > index c98e234..c86f17b 100644 > --- a/drivers/net/pcap/rte_eth_pcap.c > +++ b/drivers/net/pcap/rte_eth_pcap.c > @@ -978,8 +978,8 @@ rte_pmd_pcap_devinit(const char *name, const char *= params) > unsigned numa_node, using_dumpers =3D 0; > int ret; > struct rte_kvargs *kvlist; > - struct rx_pcaps pcaps; > - struct tx_pcaps dumpers; > + struct rx_pcaps pcaps =3D {0}; I think this is not required to fix mentioned segfault. But I am OK to keep this. > + struct tx_pcaps dumpers =3D {0}; > =20 > RTE_LOG(INFO, PMD, "Initializing pmd_pcap for %s\n", name); > =20 >=20 please update patch subject tag from "drivers/net/pcap:" to "pcap:" Can you please send a new version with above minor issues fixed? You can keep my ack in new version. Acked-by: Ferruh Yigit