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 D35FBA0032; Wed, 11 May 2022 15:58:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C307E40DDD; Wed, 11 May 2022 15:58:48 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 12E56406B4 for ; Wed, 11 May 2022 15:58:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1652277527; x=1683813527; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=3pnNsTgEzbt8cFjslcN8leYv2t7uiXxXr+UVthvLSIc=; b=Za1EGZLB1KtAez1IWvVYtCpE1vaCOMcid6kBoSFToZT3KG5qAUEJOpxj EKW7oIC8Kr+aCYb+mgpncV0JYrpxRYS2a/B5g5JuzGB+ki6kaCiIyF5aj 0lp/mpiQ8shqIgBpDg5ZzC0c6gTG3LnS4Das/0KRG1J8zPAYQbWGxuPgJ g0xE3rtKfVwjOOLb9d3Y0v7lEkmsjviadey9hqhkOP9WeldtReRA/OM3b eA6Y1ZPDY2uhBPdo0F4rpJ96E/tc4YG+sc5VlxNM+xblJnS8enmxPrXGd Ck5ct6G5lMRN1f72qDoIfwc5nmnOYRBUNarguB3OR3dDGrcKTw+ZDF4eT w==; X-IronPort-AV: E=McAfee;i="6400,9594,10343"; a="332740230" X-IronPort-AV: E=Sophos;i="5.91,217,1647327600"; d="scan'208";a="332740230" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2022 06:58:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,217,1647327600"; d="scan'208";a="594143394" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga008.jf.intel.com with ESMTP; 11 May 2022 06:58:46 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 11 May 2022 06:58:45 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 11 May 2022 06:58:44 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Wed, 11 May 2022 06:58:44 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Wed, 11 May 2022 06:58:43 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h2qEHIzNNi6U8sKgSjEvHJ32TqoRNjpZg+JYCMxIeaYwbw3KN5It+twSVPrTlir3uQsXYmyLsQ7ybZOGPuXjCwzB8SyKgx7fxx6w2OGu2WbfK7udp7YT4rks9XqZLoo+yrgHWIq6dAYpFgWaf5mWWZP4759kY1d9aIo7GpwWSM928S4I7zJnBc2AJZLSo2eWWrCl1Dyn/MKyw3KkBF5dvigoXxjWCu0tdZORLdeFy/ZxdI8yAp4dJd2t6M1ul7u4oAV4+SX9PV31R8rbMn4PP8f5OxwAti9W5eJl0AQ7VtlSO1bQYPvj44FytopWqceo7QGWNOuPVtzcssZQVExVJw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4affdk2GEpoX+x5GuaHec74l7TXXlZccJX23oXlvdWA=; b=cYkq3tXkdJHAoPupZvk1bl8gpADLJrVsbDDVomLHh9cbsKbg+LpYM/cX7KxHF4b9xyRxzATgjMU4AAMWvhML784KeOJD39OaWfsAJNySX0E6CDv3REOveuiURMNZCg/IKktzARzbIemYkwTieWmxFJuZUN5hKfHxT7sh8sREcUgQXaBrR80+o/2EDr6z31NME32UDEUIyJ0whVIgRBW07RXZ4Jd2OEE9LA8cIZdoyu9PDZ8oT/gkZPaYXSE//YqJnDOfbGcB9RmeH7fV5VvHUpz+cRcNNVh1iG8loX9JRS2S5SzGTd5gCYUWUNKx6yv2vt/nmKSmqCeLijCYodu5OQ== 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 Received: from SN6PR11MB3504.namprd11.prod.outlook.com (2603:10b6:805:d0::17) by DM6PR11MB3369.namprd11.prod.outlook.com (2603:10b6:5:b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.21; Wed, 11 May 2022 13:58:37 +0000 Received: from SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::2c8f:42df:ed85:99e5]) by SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::2c8f:42df:ed85:99e5%4]) with mapi id 15.20.5227.023; Wed, 11 May 2022 13:58:37 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "Ding, Xuan" , "Hu, Jiayu" , "Jiang, Cheng1" , "Pai G, Sunil" , "david.marchand@redhat.com" Subject: RE: [PATCH v2] vhost: add runtime locking check in unsafe APIs Thread-Topic: [PATCH v2] vhost: add runtime locking check in unsafe APIs Thread-Index: AQHYZQSdOwYRME1ejkm6NkdXaTtqKa0ZtFOA Date: Wed, 11 May 2022 13:58:37 +0000 Message-ID: References: <20220511065837.1267895-1-maxime.coquelin@redhat.com> In-Reply-To: <20220511065837.1267895-1-maxime.coquelin@redhat.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b8014e5d-a154-44b9-d66d-08da335658b0 x-ms-traffictypediagnostic: DM6PR11MB3369:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ynbv6W+nqVOgf+YSSK2ZFoddHY9WBlBndJD2YG0KkAEUZUm9GTqet+bB+Mzpz13dWJm1tpjp4L3hRrVccFLKUlxOgIeXKdQl+JRYKSKFTXBWipFCe5kcTjbyPxslaBB7wXXy4XZ97rLSpdec0ZiFPgvzYZeSCeGpkUBMH/mVizMf3KMbAPgOluv/+rTaaLDrCpy4tpjCLl/93Ya78ibI/SeViZ/mqmEHQwb67rtW4z5aTqMdUKqtjAVWz9L77c5LsMa+GfZgTEzdUbaclyFhSgIJ63nlTYiE3QDZ7pXhOzLeADbhfO/ewIB9FV7OL2NuCpMZC7k0/vxnb7gWX1n5KoftxSDviyFyNu/at+n6iVlEyJNiCNkP4twzp86j9E1nztBmHfv32XJyqOdYOU3HOB2B2FVd+OretbWVrpO4NX+7V6/0Ni2j0fbjyHSYjCvkY3fPd1ApDgKsaKT6uk8NAT5yYj4pGFHOcZvG7aeAqnwIaNjv5X+D8tcrGrFMXs2+RhSGmHd1oZ8j6nlqIDKQfBmHrRqmgwRStUtVlT416KPPCr6OxSt6Qzqqz3/1VR32Hroo2YvVYa4Mnxrj5ko1cACYMIdk17HO751O/pkhvnWVrC++OScyilfn8LF65gsJOVs2DLZzLfRf/5zBwBPcYcutQYH0aC/n88fsOP0oNYG8Atf5BMDC4MCxGDrJn6Us9phL7LGn7WpDdOCw8YQZA2DxqQdA9SETbxJQvL8qrsk= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB3504.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66446008)(8676002)(53546011)(76116006)(5660300002)(66946007)(6506007)(64756008)(66556008)(83380400001)(26005)(9686003)(66476007)(7696005)(33656002)(2906002)(8936002)(186003)(52536014)(508600001)(55016003)(71200400001)(38070700005)(38100700002)(86362001)(316002)(921005)(122000001)(110136005)(82960400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?iXjBf7Nlym5lCVod9OrB8OO9A1Fe/gioWzmCI7S7lUpwKqq1A9kZsTeVOyua?= =?us-ascii?Q?YWs+6GMpkcf0MamoBg6qxuUaJwcm463KXuUKg2dLb9bPN/5R+dMbbBokHme3?= =?us-ascii?Q?Lod8m4KHbLyVrTwSplysiKldsTr1L9cxmIlw+rrPByUEeJhXv5mesOskmp6V?= =?us-ascii?Q?J7QZQnGpZIj8aBwfvEh4pjkvRsodfNZT2fpv10hzWHVriCLiorLxXP35V4Cf?= =?us-ascii?Q?ZLFaYxXX/CCt624Zy6siP3ba/DlDNnj52SbxuV5zE5iBOJU/YOw/NtZso0KF?= =?us-ascii?Q?TNQ9vQcV9hPcAqviGvRU7eKegfdKkJMeNQRTQ7oLff/XNtYEpmeUKyml2ejs?= =?us-ascii?Q?ExFbaDnIrujoRn1IvYIAPLnWL7tbsGvjLnkxnQXY5ZhWH7ZxBh2XB6vgint+?= =?us-ascii?Q?UREujQC9T6BrEonvKL5Lw6dXzYLLMyTrUxUSaczXET+OS92hWMx6eBru36lC?= =?us-ascii?Q?RDa6r2CiAX0C3NnydLxaPqouCWon9Qg7AF9xIJu8IiPR1qOM8xDgBU1de28l?= =?us-ascii?Q?zlmTuVbu+tQsIULJx29ZGBYr9w5aa6JSrgjLHYKXMsS6P7VRQOzGbNnDTs7G?= =?us-ascii?Q?Yg4XFS89Pmgcn7R+hr2xr8IbB4YA9xGvfHM/1FtfEQ1AGsohchljVGMkWjTx?= =?us-ascii?Q?YSInCwCJ0UvyuSRcyHPY+zEUNgXPJthDPoTpDdGsHYTtOOBksBok91sRNY8G?= =?us-ascii?Q?V0MvvrI5mUKWLpbiX3FsnqkAkS36KtkyzGNM1B5ki5zXlKMRpZ8BgnIofqBo?= =?us-ascii?Q?hI0DRP7lcha5mZEaoz+4eDZWxfb7AGRlg/AR01KnFQc1tUQ2lUrOYWykZ2oX?= =?us-ascii?Q?37sxZRQ4SarR7VMWDTl5hUcaA/wh9ObZiAuKdp7Xj8Gc5k3zCZ1QHH4qUrfC?= =?us-ascii?Q?7Jg9pzi0CgC9AGa+JqAIGDQo+bw9d9WjPZrGknN5yDSGXdLjIs1Hl2m3kQbT?= =?us-ascii?Q?392qIkIDBTTljN+dSzD5Ya5VVbN3g6ffekbNojniQA8nTxqJ0rFM8soqW0c+?= =?us-ascii?Q?9uEAb1u6Di6MRBuXJW17SDkv4Xy45kLxOzb2EI26YGNddnECcdPRObXxbaDO?= =?us-ascii?Q?BqukeBp7soKiJceIkNN9cJAxsnf7sydeKXBkLzv95bojGWbtvchUsd+ES3jZ?= =?us-ascii?Q?0ngOAySM3doMySE3t6e5xZJdun6jQvpLqjLcT4dUTOs4k7ofWLg0ID8D8Dv2?= =?us-ascii?Q?czEvux63nTFu++k9bbRSKG5Q9HowVjfS1JQIm+51zTOCMWHjV4UrxO4SrmkA?= =?us-ascii?Q?vVy5X3pMLYzOs+P/+7MLNOhS+YZi6yovkdbN2iWDu7a7u8VYe6MUqeIcLoGV?= =?us-ascii?Q?hRwS70IeSDCTC2YdfFAGjTrXlmCJ4gz4e672Lq+MyQxO+ZT7WGkFyODQO7ns?= =?us-ascii?Q?8e0gtXmMk1wgD5Rzw5fLnqoL6FB9xlhOC0v1eYuvzvhWlJEszf2eTacmo+wn?= =?us-ascii?Q?Kxql7Zms2BH+ucALjZ3hm7AUcjS4Ty7FycRvMu0W/wOGDRIj3UQ69+OV72r9?= =?us-ascii?Q?LIAX/hdh2dMxKbKqyXMMY0OHhtH/l//TfqjxRoGmwUgc3amP42esJ6Tiu0Rq?= =?us-ascii?Q?RFWJk0SKkAl96WERoJCL9SZ5m3WnR649yUf/g1QF9shKTgnjNzZvjYbHmlDq?= =?us-ascii?Q?dNCztaqDZ+g8bCqYfGPa+tUrhHwCB1qxQ3VvugeCOJWl500Ir3xcJGKQU5Ob?= =?us-ascii?Q?eDZg3RnflE6vk6uFr7nmECUsxxWhDpEVoJBROkkczLeuQOZZja/CPBAshLnZ?= =?us-ascii?Q?vfVo/bxlTA=3D=3D?= 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: SN6PR11MB3504.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8014e5d-a154-44b9-d66d-08da335658b0 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2022 13:58:37.4222 (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: kPeDqADbJXMVrI5/r3o8vR+CsIAiy/jExZzFVy8030xq+s5VeC4fbXuhBZSAxMOUG6uMnKyc4deEh10TnElGsQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3369 X-OriginatorOrg: intel.com 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 > -----Original Message----- > From: Maxime Coquelin > Sent: Wednesday, May 11, 2022 2:59 PM > To: dev@dpdk.org; Xia, Chenbo ; Ding, Xuan > ; Hu, Jiayu ; Jiang, Cheng1 > ; Pai G, Sunil ; > david.marchand@redhat.com > Cc: Maxime Coquelin > Subject: [PATCH v2] vhost: add runtime locking check in unsafe APIs >=20 > This patch adds runtime checks in unsafe Vhost async APIs, > to ensure the access lock is taken. >=20 > The detection won't work every time, as another thread > could take the lock, but it would help to detect misuse > of these unsafe API. >=20 > Signed-off-by: Maxime Coquelin > --- > lib/vhost/vhost.c | 18 ++++++++++++++++++ > lib/vhost/virtio_net.c | 6 ++++++ > 2 files changed, 24 insertions(+) >=20 > diff --git a/lib/vhost/vhost.c b/lib/vhost/vhost.c > index df0bb9d043..39cbeb415c 100644 > --- a/lib/vhost/vhost.c > +++ b/lib/vhost/vhost.c > @@ -1732,6 +1732,12 @@ rte_vhost_async_channel_register_thread_unsafe(int > vid, uint16_t queue_id) > if (unlikely(vq =3D=3D NULL || !dev->async_copy)) > return -1; >=20 > + if (unlikely(!rte_spinlock_is_locked(&vq->access_lock))) { > + VHOST_LOG_CONFIG(ERR, "(%s) %s() called without access lock > taken.\n", > + dev->ifname, __func__); > + return -1; > + } > + > return async_channel_register(vid, queue_id); > } >=20 > @@ -1796,6 +1802,12 @@ > rte_vhost_async_channel_unregister_thread_unsafe(int vid, uint16_t > queue_id) > if (vq =3D=3D NULL) > return -1; >=20 > + if (unlikely(!rte_spinlock_is_locked(&vq->access_lock))) { > + VHOST_LOG_CONFIG(ERR, "(%s) %s() called without access lock > taken.\n", > + dev->ifname, __func__); > + return -1; > + } > + > if (!vq->async) > return 0; >=20 > @@ -1925,6 +1937,12 @@ rte_vhost_async_get_inflight_thread_unsafe(int vid= , > uint16_t queue_id) > if (vq =3D=3D NULL) > return ret; >=20 > + if (unlikely(!rte_spinlock_is_locked(&vq->access_lock))) { > + VHOST_LOG_CONFIG(ERR, "(%s) %s() called without access lock > taken.\n", > + dev->ifname, __func__); > + return -1; > + } > + > if (!vq->async) > return ret; >=20 > diff --git a/lib/vhost/virtio_net.c b/lib/vhost/virtio_net.c > index 5f432b0d77..59163bc165 100644 > --- a/lib/vhost/virtio_net.c > +++ b/lib/vhost/virtio_net.c > @@ -2091,6 +2091,12 @@ rte_vhost_clear_queue_thread_unsafe(int vid, > uint16_t queue_id, >=20 > vq =3D dev->virtqueue[queue_id]; >=20 > + if (unlikely(!rte_spinlock_is_locked(&vq->access_lock))) { > + VHOST_LOG_DATA(ERR, "(%s) %s() called without access lock > taken.\n", > + dev->ifname, __func__); > + return -1; > + } > + > if (unlikely(!vq->async)) { > VHOST_LOG_DATA(ERR, "(%s) %s: async not registered for queue > id %d.\n", > dev->ifname, __func__, queue_id); > -- > 2.35.1 Reviewed-by: Chenbo Xia