From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6791AA0C43; Fri, 24 Sep 2021 07:41:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 141B6412B7; Fri, 24 Sep 2021 07:41:03 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id C6D3F40142; Fri, 24 Sep 2021 07:41:00 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10116"; a="211082336" X-IronPort-AV: E=Sophos;i="5.85,319,1624345200"; d="scan'208";a="211082336" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2021 22:40:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,319,1624345200"; d="scan'208";a="485274100" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga008.jf.intel.com with ESMTP; 23 Sep 2021 22:40:57 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 23 Sep 2021 22:40:57 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 23 Sep 2021 22:40:56 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 23 Sep 2021 22:40:56 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.174) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 23 Sep 2021 22:40:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RQeB2n2PZvnACx5pwBe4ecF/7F1E5PH9kITof5uEb4YQM+H8+DaQ8LoWEMq8Couqcdzzo6B9dSJVCNQXnF1UhUjGE9yLHrLpu6hafq9lW0buXWoVOYcO0fasAIC2RcAg6YhLMENX6v1tjIJdP+dvoRfH8ah5L6q2twKbaZTIDQB5KdXlrdM+lynBYK5iuRf8fGW8dDWr+NAYc6XbuncYVgrjFfp2EaVeGmi96fuvKpkAplzzSLJf19he9RzFIMGE4CQjpf4OVHCun28em/UJ1RAclfqs+tf1WJ3N86znkMSsIVriL3bEBlCyZJdcaqXHckxN3QYeeJRPjSL0ZHs2Ew== 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; bh=SXW01vBDHEtyh9Mhfe7Gp9dpyA9LwEX4PA6V9PUkKhA=; b=dowDut83PqLi+Yn1RyTaHdNqej+p6gDENu2I2QQg9T+0yib/2TjDahiZYoWGrFy/Fusnxsyo619vV+MkALXXFLYi/t3FSiE6z6obMtZ0z4B+vbJSA9JRuDKJmMod6sUQNmyrEOD7Ug2ntEOmlMmGdBUzDyNY4he7dYaraLdkthW6P8Etx1w/q63LCdoqYdlC0vsfevMLGWD2WmUO4R/omrcOl9psDn1PABHiJmDJ2J8GjO1WNJEIm4HmCxWqy3uLRwFEB5oVinDxTcNiRfIYoFjwdNQZmPf/7DoZeKOkgEQKQdh4nOVG9S/tMafi69ihpGxm6twrtZrjBUj7XLl4qg== 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=SXW01vBDHEtyh9Mhfe7Gp9dpyA9LwEX4PA6V9PUkKhA=; b=g4DsNHKiyH3q3LA5EeP+OaWszyzFR24vdnuQ+yuh0dpRevTM5ehMczvA+kN9w06npXNb5rQaUo/5pqi+gizLWxERpMMJsqyoBDIxU+ndHOlLwWmqP/L86jwfYredOs62PaNZyqkKSrOti1z3l/yByYCkmfr3Bd1/o8VLitmRV+w= Received: from BN6PR11MB4035.namprd11.prod.outlook.com (2603:10b6:405:7a::38) by BN8PR11MB3666.namprd11.prod.outlook.com (2603:10b6:408:8c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13; Fri, 24 Sep 2021 05:40:54 +0000 Received: from BN6PR11MB4035.namprd11.prod.outlook.com ([fe80::fc0a:261:b550:746d]) by BN6PR11MB4035.namprd11.prod.outlook.com ([fe80::fc0a:261:b550:746d%7]) with mapi id 15.20.4544.015; Fri, 24 Sep 2021 05:40:53 +0000 From: "Su, Simei" To: "Yu, DapengX" , "Yang, Qiming" , "Zhang, Qi Z" CC: "dev@dpdk.org" , "stable@dpdk.org" Thread-Topic: [PATCH] net/ice: fix double free ACL flow entry Thread-Index: AQHXoKsTh3uJhjnt70OGDgh9bTWuUKuyy3Tg Date: Fri, 24 Sep 2021 05:40:53 +0000 Message-ID: References: <20210903100411.1693789-1-dapengx.yu@intel.com> In-Reply-To: <20210903100411.1693789-1-dapengx.yu@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.200.16 dlp-reaction: no-action dlp-product: dlpe-windows authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c7621d43-e894-4f33-b33d-08d97f1de013 x-ms-traffictypediagnostic: BN8PR11MB3666: 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:24; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0lus8Kdw+OpwTC1ajEveBB+Tv4pTNCS9thlMeNXfQHnjXOMLi+1B4U82VPCg7KHAf2prWXZHK54YjHEN8Np+DBFkKAPPINAwrUmbA7EZSqm0mgE7RQvAnoRn1u7//RkFd8tjZANLJboh62w60j6ehzRbGF15q6xTePcm6bNrk0elN1UG2qMzjNVNBkkr31RA8weR+l3P0zE38BRWDA0prpcFIq1nulKsXIGmzToJnDg41nqnNNdFvFWhoIuvaf9cCfHNtUwH9th+mu5JChwsClZ6CbewcPFIk+p/lKDYukfyDXELZkHvmySPDJfIVNlA0okKzgZzZneP4mIUkn6YE0PgKMOTvp7jLVwUfMZoSCHsaQZ3P6vBapxX4huWG8MZa+vQM47VFExy/Aj+k3n+yqtMDXXaL2e/xMHKL9yF6kiO2TsYvp4rTqwBfNOTxoH0Z0FQwtLww4XN+WluqaDvBw9AN3twl7/1kQ1Yie5TKtaz5Ty5V7cetZkNotFK1PaHHX0Os0I1RWURlHSgyt8KbevVAi6o03PaDzj8R9LnxVZwD5W41D5dlPLZWy+xlydI0QokCMpl7qmRn1/t20q6+yOsysDXtqgJo2eCgiUFZggTxrjtrgiIwSAu368Gx8XbaHLJTk/vOG3T0lLvN24DcI1/aG25mmwFWPZst/zf7o9LmaSmHpVKPHPEjstWapiyZziJlCgftipEWgCoL8rBKg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6PR11MB4035.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(186003)(508600001)(4326008)(5660300002)(76116006)(450100002)(26005)(33656002)(316002)(2906002)(54906003)(6636002)(83380400001)(8676002)(110136005)(71200400001)(122000001)(7696005)(55016002)(38100700002)(9686003)(66946007)(66446008)(64756008)(52536014)(66556008)(86362001)(66476007)(8936002)(38070700005)(6506007)(53546011); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?fyj5tTXwW4F1NvpVIrcBwjaE4oYIaVZkCrAZ4/vj+e2wTiQeroqQOcBKR3M7?= =?us-ascii?Q?xJTMKwFyVvLX2/NaKYDVVGNnCSp1SmwAMAIm5HVxh0j7N2pEwcOr6U8VR+1p?= =?us-ascii?Q?yPl/SugRcQNFGRPtb200LqWqMBsAtX2lUaKhKeo0LB+0OsnwnEADDTu+XYz4?= =?us-ascii?Q?NKLSa8uIApZCyRXMwhcUYLm97Bksf5d/4uLGLx83J2uL9fJs36yD8mOusaAZ?= =?us-ascii?Q?EpCQ3QyAR7jaT1wO/UhnW5wT3Dfx6L+yb6yunnwB9OIoDFLLH/4sO3rlYSi+?= =?us-ascii?Q?K1YFpiAGAV/Vyv0V/TkPJUuBM6Uny66qdE2rdbavzMVk79Ler6f0RI8bgguq?= =?us-ascii?Q?lAqeMOkMu6WFWZeuIz8RMCd5M6Hy3NOrLmKzT85h3WWMR69uWX6sYh4EOzGC?= =?us-ascii?Q?OHI+QEFISTdIH8AD22AkmgOottYmWnlm8i8CNTrWltjq1NiyfjgB4N3VfgiL?= =?us-ascii?Q?EWORUmyGSYVqfqF4xdDni6HPH+mXQJDyKYvd6UC+6GKaAENobQ2qcTrM/I/M?= =?us-ascii?Q?1MJbVsDpbYK35F4tNCWhoxO5tYYnzl8fn4VO6g6KxO3tdezf94IIRUky18CO?= =?us-ascii?Q?GlcJ/sIWgUvm2HNJ82Ad6sex09TRELu/H63vlyoJ9hOtfF1G8UqAmOiJbVyY?= =?us-ascii?Q?CysaNE1b042XImcsIszCGhtn38WR9r4UDSvyuF5QXqBoRVbvVuMrUFFCcxYz?= =?us-ascii?Q?GQKEAJXXMDb4H+sj4q5e/sduxkmI75ew13NQG/dhVZ4wManknktX3XHnpF5+?= =?us-ascii?Q?GTKGPPCOnm+9iru5AvW8yFP0SSf5b8TLFqDq6utWzJx+L9zYObc4oHneFZLQ?= =?us-ascii?Q?7Wlu3AXfpTeLYa0o47+US2RcAnXeclPcQXshXFeGc6YL54JnuHG0zZZqSfyJ?= =?us-ascii?Q?qSgdhICi49fZ+CEZLBsm1c8+NnZH1phgrT7rxfTWVOiAhWpALTaxRfe98EjS?= =?us-ascii?Q?QKDuQBowE9UTFJBosXCCxWZla/m0cQCgpbRrTe8fTcF4QWrHlGuSl7R7fuq9?= =?us-ascii?Q?KAt5r30UuLwCSyUwLQlC23jW5HDwVTDj7V7KhPKfpRl0Clf9H+4/Qno/Fpru?= =?us-ascii?Q?06Wccq1Ge7noSDf2SR4FHmBHvA0TXDkjoFARE5Dr19Af9+6NqpvfcbZWM5l+?= =?us-ascii?Q?1i3gPHwT2t+yUiqUdkIK9g8GtGC7e7yc0ny6rjyQjyvGif4xN7eTcP7o+7JM?= =?us-ascii?Q?tBybFyBFmKb8HWnslyfZ1MFvCcLv+sZ6QcPTn1cUVpnyQA7KX64Sn1LKAKjX?= =?us-ascii?Q?V/aqKcYY+i1UHNY7rPdaqFhzmyBZ7GATJO3kAN9S9FunX8pCbT86Xc65ZZso?= =?us-ascii?Q?IIvyERtuQ5cQTejYnxZyuk/8?= 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: BN6PR11MB4035.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c7621d43-e894-4f33-b33d-08d97f1de013 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Sep 2021 05:40:53.7743 (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: oDtLLieuUNm94HXW9c/yEt8AtRFiiNdDOe78rrLK1rSSpTAq1AGSSs39zmIx0IsBgTOqhJYILEo+c9D9LF7xmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR11MB3666 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH] net/ice: fix double free ACL flow entry X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" > -----Original Message----- > From: Yu, DapengX > Sent: Friday, September 3, 2021 6:04 PM > To: Yang, Qiming ; Zhang, Qi Z > > Cc: dev@dpdk.org; Su, Simei ; Yu, DapengX > ; stable@dpdk.org > Subject: [PATCH] net/ice: fix double free ACL flow entry >=20 > From: Dapeng Yu >=20 > If call ice_flow_rem_entry() directly without checking entry_id, may caus= e an > ACL flow entry to be freed more than once. >=20 > This patch tries to find entry_id first, then call ice_flow_rem_entry() t= o avoid > the defect. >=20 > Fixes: 40d466fa9f76 ("net/ice: support ACL filter in DCF") > Cc: stable@dpdk.org >=20 > Signed-off-by: Dapeng Yu > --- > drivers/net/ice/ice_acl_filter.c | 33 +++++++++++++++++++++----------- > 1 file changed, 22 insertions(+), 11 deletions(-) >=20 > diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_f= ilter.c > index 0c15a7036c..f44ce5d77e 100644 > --- a/drivers/net/ice/ice_acl_filter.c > +++ b/drivers/net/ice/ice_acl_filter.c > @@ -45,7 +45,7 @@ static struct ice_flow_parser ice_acl_parser; >=20 > struct acl_rule { > enum ice_fltr_ptype flow_type; > - uint32_t entry_id[4]; > + uint64_t entry_id[4]; > }; >=20 > static struct > @@ -440,7 +440,7 @@ ice_acl_hw_set_conf(struct ice_pf *pf, struct > ice_fdir_fltr *input, > PMD_DRV_LOG(ERR, "Fail to add entry."); > return ret; > } > - rule->entry_id[entry_idx] =3D slot_id; > + rule->entry_id[entry_idx] =3D entry_id; > pf->acl.hw_entry_id[slot_id] =3D hw_entry; > } else { > PMD_DRV_LOG(ERR, "Exceed the maximum entry number(%d)" > @@ -451,18 +451,28 @@ ice_acl_hw_set_conf(struct ice_pf *pf, struct > ice_fdir_fltr *input, > return 0; > } >=20 > +static inline void > +ice_acl_del_entry(struct ice_hw *hw, uint64_t entry_id) { > + uint64_t hw_entry; > + > + hw_entry =3D ice_flow_find_entry(hw, ICE_BLK_ACL, entry_id); > + ice_flow_rem_entry(hw, ICE_BLK_ACL, hw_entry); } > + > static inline void > ice_acl_hw_rem_conf(struct ice_pf *pf, struct acl_rule *rule, int32_t en= try_idx) > { > uint32_t slot_id; > int32_t i; > + uint64_t entry_id; > struct ice_hw *hw =3D ICE_PF_TO_HW(pf); >=20 > for (i =3D 0; i < entry_idx; i++) { > - slot_id =3D rule->entry_id[i]; > + entry_id =3D rule->entry_id[i]; > + slot_id =3D ICE_LO_DWORD(entry_id); > rte_bitmap_set(pf->acl.slots, slot_id); > - ice_flow_rem_entry(hw, ICE_BLK_ACL, > - pf->acl.hw_entry_id[slot_id]); > + ice_acl_del_entry(hw, entry_id); > } > } >=20 > @@ -562,6 +572,7 @@ ice_acl_destroy_filter(struct ice_adapter *ad, { > struct acl_rule *rule =3D (struct acl_rule *)flow->rule; > uint32_t slot_id, i; > + uint64_t entry_id; > struct ice_pf *pf =3D &ad->pf; > struct ice_hw *hw =3D ICE_PF_TO_HW(pf); > int ret =3D 0; > @@ -569,19 +580,19 @@ ice_acl_destroy_filter(struct ice_adapter *ad, > switch (rule->flow_type) { > case ICE_FLTR_PTYPE_NONF_IPV4_OTHER: > for (i =3D 0; i < 4; i++) { > - slot_id =3D rule->entry_id[i]; > + entry_id =3D rule->entry_id[i]; > + slot_id =3D ICE_LO_DWORD(entry_id); > rte_bitmap_set(pf->acl.slots, slot_id); > - ice_flow_rem_entry(hw, ICE_BLK_ACL, > - pf->acl.hw_entry_id[slot_id]); > + ice_acl_del_entry(hw, entry_id); > } > break; > case ICE_FLTR_PTYPE_NONF_IPV4_UDP: > case ICE_FLTR_PTYPE_NONF_IPV4_TCP: > case ICE_FLTR_PTYPE_NONF_IPV4_SCTP: > - slot_id =3D rule->entry_id[0]; > + entry_id =3D rule->entry_id[0]; > + slot_id =3D ICE_LO_DWORD(entry_id); > rte_bitmap_set(pf->acl.slots, slot_id); > - ice_flow_rem_entry(hw, ICE_BLK_ACL, > - pf->acl.hw_entry_id[slot_id]); > + ice_acl_del_entry(hw, entry_id); > break; > default: > rte_flow_error_set(error, EINVAL, > -- > 2.27.0 Reviewed-by: Simei Su