From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id F0A13A04B7; Tue, 13 Oct 2020 17:39:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AA97F1DD41; Tue, 13 Oct 2020 17:39:35 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id E3E451DD21 for ; Tue, 13 Oct 2020 17:39:32 +0200 (CEST) IronPort-SDR: FjFKvuV9krD0MLCNdOZVKQv8Th5D1TXVUx4KqSllIkku4COaTmYBnOYlkyUYjGY8LBPTRhAiKs ELOrsov1HyPg== X-IronPort-AV: E=McAfee;i="6000,8403,9773"; a="227571997" X-IronPort-AV: E=Sophos;i="5.77,371,1596524400"; d="scan'208";a="227571997" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2020 08:39:29 -0700 IronPort-SDR: wuTsdKAOwQvZ1utmlov1t7evFQtxI54T0feQdG/yGx1hqlodmf+Hvcs/TU/C6+w825vTlZiYQ3 U6DRDG+DTAWA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,371,1596524400"; d="scan'208";a="463533643" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga004.jf.intel.com with ESMTP; 13 Oct 2020 08:39:29 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 13 Oct 2020 08:39:29 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 13 Oct 2020 08:39:28 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 13 Oct 2020 08:39:28 -0700 Received: from NAM02-CY1-obe.outbound.protection.outlook.com (104.47.37.54) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 13 Oct 2020 08:39:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xu+PgoglLb8mCzH8lR+jzBS0CvZ9wC8JSQabVfT7TZyZMroJfztxNq/StQhbfKUHd+6s0F6T42lTySYFZmSyPOwfLgJuwxxH2avv0zuDh3ON76CUWSUF3t37MBKJFOnZPFNBkqeqWOZpAdHX1dWOz/oNV5+iPhUNlY2OEc46uT5K8brnjxNyZIVRi3zdfdgmzzbKoGPfTXZFj8/5h5QFIeKmGJabz4cinf1d+qVqV3gK8gIEHJHVI+BpsNj+IIiWS3BMv83VDSAj3EZ7W/kGOu6cT8de6rWYJVddgWPmxo7uEa8IskeByVcElSavNfn5K1blPu4wz7zs62MiFEzlZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1ikSqOf0b9PK2hvIFS8PIneWSAuHabzNmb8G2WuR7zQ=; b=A8CFzMRTMQi8wclvPovWywmPKQSkdB5ND5pqzwK7cfzlmcZstRMnmeDDcGeNgJNg4mHLSYw5D8ZJFvZac5g3DZw5ugkuBJDVCXcowanTos1ZjBTvdBd+XVjtlACbd4HJbQvNm8liUD7PpCCH+CMjTvRVdp2rSNCycza+ZrfUSIttvyVi6MzwH3vj3v11uJWa5RymX3xWZ6RsJ5F8/DMRFSEXzKnjJdTp/1tGbUk+MZL+DBXbeCsmiW67ExGlW7FFfNQeuySNT4l1Mvm6xm3yvZl+oOzr5yS2kZkZ5XZJi++YD5IlyZRvfJqj4zqzbVjFBAzVrDMW1QdlZND/0ZCNgQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1ikSqOf0b9PK2hvIFS8PIneWSAuHabzNmb8G2WuR7zQ=; b=xfslIdhtR+idez0I+95+sfgqmLmw09idjVB8En77EWdQHcepaBrWMwNRd0OunJs+rlm7QLyxszcwHnASlDKEGWSm0kEXknzgTRjQpnb+Xy1YJAZCDx+Bjgu8VjcHXB5d2eetmIHiMcVcYmsteuX5pYw6oAqqZ/oDmerlwySIFt8= Received: from BYAPR11MB3301.namprd11.prod.outlook.com (2603:10b6:a03:7f::26) by BYAPR11MB3480.namprd11.prod.outlook.com (2603:10b6:a03:79::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21; Tue, 13 Oct 2020 15:39:20 +0000 Received: from BYAPR11MB3301.namprd11.prod.outlook.com ([fe80::f5a4:3f6b:ade3:296b]) by BYAPR11MB3301.namprd11.prod.outlook.com ([fe80::f5a4:3f6b:ade3:296b%3]) with mapi id 15.20.3455.030; Tue, 13 Oct 2020 15:39:20 +0000 From: "Ananyev, Konstantin" To: "Hu, Jiayu" , "yang_y_yi@163.com" , "dev@dpdk.org" CC: "mark.b.kavanagh@intel.com" , "olivier.matz@6wind.com" , "thomas@monjalon.net" , "yangyi01@inspur.com" Thread-Topic: [PATCH] gso: fix free issue of mbuf gso segments attach to Thread-Index: AQHWnrL85KBHJVyvm02xWITKaS0ypKmVJ4OAgACCzBA= Date: Tue, 13 Oct 2020 15:39:20 +0000 Message-ID: References: <20201010031020.349516-1-yang_y_yi@163.com> <43f71e6c9d2f4d5ba3ab56a921c5912d@intel.com> In-Reply-To: <43f71e6c9d2f4d5ba3ab56a921c5912d@intel.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [46.7.39.127] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0f4f90c0-f026-4802-01c6-08d86f8e2745 x-ms-traffictypediagnostic: BYAPR11MB3480: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8IKIAuay6PTYuGY7NkfE8eszpGQl9jAp6EIXUVuffrOJmwwQZZQYGUZbvtzde81dvFXZZa+3OvLJ5Nq25r0lMJLHpQ7HvsDYmE1kEmAZGKxP8eFE1gg8F75TltEAipzjUiA7N/BG7a3VOtWXRVzhvLDMXCL9sFxJYuu10lg55dCYo7MPjCLy51y7z2/aJXOzaB5NMOYRbtXC2eoNqeA9yTAbwGfOHkWF2LuLSPClxBMP8m1iYrJHH25CHorNfsjrhBFB512HVFT0rar1LzSOvkNnKiExaNDuY7X9MhgiHS9oUvNRRq/lgHdw0NFQQ/xXTbQqrDQZoc8ck9h1nvkO+A== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR11MB3301.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(376002)(346002)(136003)(366004)(396003)(478600001)(33656002)(4326008)(2906002)(6506007)(7696005)(83380400001)(9686003)(52536014)(66446008)(26005)(66476007)(64756008)(66556008)(66946007)(55016002)(316002)(86362001)(71200400001)(54906003)(5660300002)(110136005)(8676002)(8936002)(186003)(76116006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: ljDk862pJieIn5kHP4aj/xE4/gkiO2F7YatzQ2+2kO6ew+d2qz7UxQ79HEL2Lv+JxfFrDXLYasHX+oniKDHAfIFnsmiiy1sgTRdJdD9xDhB1i4DI+/64d+vWVm8dbrKqgZ7Mnv/DVQRIxbrF8AgzBgo23iQwtxWSMaCZGC0+4pbOj5DFtbdkxAEDXVPH6BLhejr7Klp2MzyPW/4WpUSP4XAJO7JljyxZlxHqBGnaPh6rnbO6JvzGW+Is/7p4FvZ72lWAuoAVTmnilY/4H8mPAuroWjWmRNx7zTa9drh+y+HvDkmJpcyCA8jfjOkWf+gJ2xQLctorFCP/HZ+mIPj8qAZokuYWXWjtl4Nbkjp3GyWBVg8q647NYFlgjeBSy/sORSmlJn5+1VLKbiPIGnV5DudNazKn8EiX461CvZ/Foh/cMpyPR4jzhoaVJ72dHJm1bKhex8UcLeNTjcdUROfhGh/CN17SAaLEF+bQDEcKX+OTQ1ctllJvEqudjvXOXvvi1wuVLTxqMtHCLwdqmKQ7Y4VaL00TV2w68oyV/DilSEZdpAe7MAJyqDutLHXfgv88dg4Kcqxbgl5saw4AyrWEE36opJNyvnvn49p9Mo5f3yAZzIvOyBKlpmTr4Jr/r4ra3LQ7v4pn0YLZZ/jivxQs6w== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3301.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f4f90c0-f026-4802-01c6-08d86f8e2745 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2020 15:39:20.5229 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bCVxiU8WKA+Nrn8LlWiRzPoTcn3aSJKiEN3Az/kVDR9giON0k0jjxgjjNG9eeDYYR5DVxeK/80+O2sVaaQ0kzNDBJJEqK7s2F0af4qneOMU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3480 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH] gso: fix free issue of mbuf gso segments attach to X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > > rte_gso_segment decreased refcnt of pkt by one, but > > it is wrong if pkt is external mbuf, pkt won't be > > freed because of incorrect refcnt, the result is > > application can't allocate mbuf from mempool because > > mbufs in mempool are run out of. > > > > One correct way is application should call > > rte_pktmbuf_free after calling rte_gso_segment to free > > pkt explicitly. rte_gso_segment mustn't handle it, this > > should be responsibility of application. >=20 > GSO doesn't support the input pktmbuf has external buffer. > Indeed, requiring users to free the input pktmbuf can avoid > memory leak, but I'm afraid that it also changes the semantic > of rte_gso_segment() which is defined in rte_gso.h. >=20 > @Konstantin, any suggestions? Probably, a stupid question, but why can't we call mbuf_free() here instead fo decrementing refcnt manually: if (ret > 1) rte_pktmbuf_free(pkt); else if ... ? >=20 > Thanks, > Jiayu > > > > Fixes: 119583797b6a ("gso: support TCP/IPv4 GSO") > > Signed-off-by: Yi Yang > > --- > > doc/guides/prog_guide/generic_segmentation_offload_lib.rst | 7 +++++-- > > lib/librte_gso/rte_gso.c | 9 +------= -- > > 2 files changed, 6 insertions(+), 10 deletions(-) > > > > diff --git a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst > > b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst > > index 205cb8a..8577572 100644 > > --- a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst > > +++ b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst > > @@ -25,8 +25,9 @@ Bearing that in mind, the GSO library enables DPDK > > applications to segment > > packets in software. Note however, that GSO is implemented as a > > standalone > > library, and not via a 'fallback' mechanism (i.e. for when TSO is unsu= pported > > in the underlying hardware); that is, applications must explicitly inv= oke the > > -GSO library to segment packets. The size of GSO segments ``(segsz)`` i= s > > -configurable by the application. > > +GSO library to segment packets, they also must call ``rte_pktmbuf_free= ()`` to > > +free mbuf GSO segments attach to after calling ``rte_gso_segment()``. = The > > size > > +of GSO segments ``(segsz)`` is configurable by the application. > > > > Limitations > > ----------- > > @@ -233,6 +234,8 @@ To segment an outgoing packet, an application must: > > > > #. Invoke the GSO segmentation API, ``rte_gso_segment()``. > > > > +#. Call ``rte_pktmbuf_free()`` to free mbuf ``rte_gso_segment()`` segm= ents. > > + > > #. If required, update the L3 and L4 checksums of the newly-created > > segments. > > For tunneled packets, the outer IPv4 headers' checksums should also= be > > updated. Alternatively, the application may offload checksum calcul= ation > > diff --git a/lib/librte_gso/rte_gso.c b/lib/librte_gso/rte_gso.c > > index 751b5b6..0d6cae5 100644 > > --- a/lib/librte_gso/rte_gso.c > > +++ b/lib/librte_gso/rte_gso.c > > @@ -30,7 +30,6 @@ > > uint16_t nb_pkts_out) > > { > > struct rte_mempool *direct_pool, *indirect_pool; > > -struct rte_mbuf *pkt_seg; > > uint64_t ol_flags; > > uint16_t gso_size; > > uint8_t ipid_delta; > > @@ -80,13 +79,7 @@ > > return 1; > > } > > > > -if (ret > 1) { > > -pkt_seg =3D pkt; > > -while (pkt_seg) { > > -rte_mbuf_refcnt_update(pkt_seg, -1); > > -pkt_seg =3D pkt_seg->next; > > -} > > -} else if (ret < 0) { > > +if (ret < 0) { > > /* Revert the ol_flags in the event of failure. */ > > pkt->ol_flags =3D ol_flags; > > } > > -- > > 1.8.3.1 >=20