From patchwork Mon Apr 11 09:36:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12808749 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 96FBFC433F5 for ; Mon, 11 Apr 2022 09:37:08 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.302775.516537 (Exim 4.92) (envelope-from ) id 1ndqTd-0007lB-Ky; Mon, 11 Apr 2022 09:36:53 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 302775.516537; Mon, 11 Apr 2022 09:36:53 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ndqTd-0007l2-Hl; Mon, 11 Apr 2022 09:36:53 +0000 Received: by outflank-mailman (input) for mailman id 302775; Mon, 11 Apr 2022 09:36:53 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ndqTc-0007jK-V3 for xen-devel@lists.xenproject.org; Mon, 11 Apr 2022 09:36:53 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e47771de-b97a-11ec-8fbc-03012f2f19d4; Mon, 11 Apr 2022 11:36:41 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2171.outbound.protection.outlook.com [104.47.17.171]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-25-tNEkerSfNjqnywlkASB9kA-2; Mon, 11 Apr 2022 11:36:47 +0200 Received: from DU2PR04MB8616.eurprd04.prod.outlook.com (2603:10a6:10:2db::16) by HE1PR0401MB2457.eurprd04.prod.outlook.com (2603:10a6:3:7e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.29; Mon, 11 Apr 2022 09:36:45 +0000 Received: from DU2PR04MB8616.eurprd04.prod.outlook.com ([fe80::5592:2abe:fb16:6cd1]) by DU2PR04MB8616.eurprd04.prod.outlook.com ([fe80::5592:2abe:fb16:6cd1%6]) with mapi id 15.20.5144.029; Mon, 11 Apr 2022 09:36:44 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e47771de-b97a-11ec-8fbc-03012f2f19d4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649669810; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JIOtB5hoGvxfTiBr5WkyK/emu3c33KdonytgCqOz8N4=; b=YSraPXG+NKJPKQV7XEbpBJSCUveMbHQ61KD2AwzOiOHZ46FeWXudkL1ogykJj84ASjv6b6 W6A/AxrKGK3eYij+cd0JrRBfFcxnsMrsCtLGyli7wX9739GxgKHPYe2/8RDj22VvZWgsfh PlLpFiGBG8afqqO3RwARErCwp+hw7+Q= X-MC-Unique: tNEkerSfNjqnywlkASB9kA-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QKToGTdRtFQqfWWcuJbuadyybRdJuj5V94VWNj0rB/6eq88t74cT7QbVPd8ZUhQul/c3clXjgNNE/7As+2QaGpHqWnnDHqW1xClA0293YqUcS5l9b1SKM1W/F6peWFyTV6D3AKYsafWQI1xPMYuyoa/MLpGikoSyynivQaHj6cN6oRs5eQd8CdEeTOzo969XxCIZ+994yr8jPa2x2lPlcXkBXE1nxrqvq5fQdyZhoHIG1l0MNZA6yPLt0YV8Wfoi7v1TDkuakfpCpA8MFF4WhIuiiWsZqYvOP5QQhdXfxCy9Mp6G5FgsZ4TvJW6jw6mjQM70x5WnGhsZOxNzwKLdpA== 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=JIOtB5hoGvxfTiBr5WkyK/emu3c33KdonytgCqOz8N4=; b=EH86Tdakl5zMvOABjYeAHevrsu26w0tIVYhywTlDjI+gzQadw6YE5cK+QJQ4rstD+gcvEvz0bXidNWxtw5V3km9qWSKsc1w4xgtFZeIZszaQyGSoySoz4cdNDaE2QFHh0u48M9/pJ2T7O5ToEsO/a3SRTNgdTHGaneDn0Lrlqq/f6RUQjXvjLjhuRCELNhDWbFPd3Dmfo8GNJ02jjnY+S+YrVwt2b5S+ozpFD4bNKcqg4WV08V0VGnNvKzPKPF6NtuQjNfsGsc1qCGVnoRovsla2MFxKQB/ANHAtCfZuDGy+DQ8vg50UqoPkx52/MnQqNHCwsH6jk7zbcg73w6kdoQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <10f43cc4-7a09-9f4f-0a6b-fd7ffd88310d@suse.com> Date: Mon, 11 Apr 2022 11:36:43 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Subject: [PATCH 3/8] VT-d: plug memory leaks in iommu_alloc() Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Kevin Tian , Paul Durrant , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: <4785ba7d-8759-7441-4ac8-0866489707b6@suse.com> In-Reply-To: <4785ba7d-8759-7441-4ac8-0866489707b6@suse.com> X-ClientProxiedBy: AM6P195CA0040.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:87::17) To DU2PR04MB8616.eurprd04.prod.outlook.com (2603:10a6:10:2db::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 950c6d75-ecac-4771-7c14-08da1b9ecad8 X-MS-TrafficTypeDiagnostic: HE1PR0401MB2457:EE_ 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: obY6t5IbgFK8u0LdxwRleVsbxyDuAAhLmLUvXt+wT/PQo4Kpvrotb8ux3+Gs1gpcCHWcrlQqGbflQUWD477CahsGbyEu2wU3Vv/4vPYy1rLon34Zy6HZIr+EZC9D3hyDihouuNej71+a2K+O0sjToypjlsuHZyvTvN0+1WEN++S7e2haspKzusu4m/RbguqnAL/W88Vk2Q1590dFaWQyhKrFc6Rc93zlEjh2STQgLmbRHEtXnZECu9y+xkGYCYXKqwCXfy58ur2rJO4N+9djJFqgBhDjAnQ8sNlnPryw322MfsK1G09df/qQiGxWlshPhROk/I8vyHmcRv8M14kochL5+pvUxrhctLWCi2nFWKuBXMN+jqKQFw84ijObl2pS5EOralmQvfblFsGakgn8BOXxGvLBgqNdmpqA/qSupV7sFEszEyW0uZrG8S0+WswrJ5kwQyC2J3D5HAc86Vvuu2411czLsq+fK3MCB66J2Y5L/k/WeQSoaBTre7bIZlPil7CpaC3kElYnOxr1+gP4iqy69USiy1AbvdyU/vonT1xRQmCoNSHsPhGjXFGkp3iB9wKdUvth4Z0UO6XuqqrWhuYHzSXmsGe8NCVogiCtbTxSWsJlMYvEBcw4XzgNbA/5h9AS8KkRJXC382+EQ7nPAVkOTrRhSakVXcqAoV4kinXS6clLcrUHf89XhNlzsSx+hXBJNXii2pa1/WUmlEVJnosc2CbHMDeCHP2gNr8sQSGcJD7uPGexww+8srIBEk6T X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8616.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(2906002)(66946007)(8676002)(31696002)(5660300002)(6916009)(66476007)(66556008)(4326008)(8936002)(316002)(86362001)(6512007)(6506007)(83380400001)(186003)(6486002)(38100700002)(2616005)(26005)(54906003)(508600001)(31686004)(36756003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?noApSjH8jpBnrJIbMPYLhOhdnpcB?= =?utf-8?q?9568QoinFAx/1TochUFWW+0MYetIUG+O80M1lG+v3RSdRSqsplOkLEYoVj4z5oMGo?= =?utf-8?q?dqk4vk3wDeIbhtrszUQCVru5YJH+oFm2L3H5pgpRmGvrdpbAEzNzMfxzMbq5tHXJH?= =?utf-8?q?6qvP4wK0Y4awFNQenfF9dy5D4fEXRozK/PERyRZIicEjH27nm8iSx86iksNC2kXew?= =?utf-8?q?5vAfzvqi0wktjDIxiWcA/FwGobpnvmtboJRdcgzpvDPH/5jy/ONbf9Cn0Nv5aJnWx?= =?utf-8?q?TRoWhCWopLEkPdZ6U9biKEmHiRpg4fANtb7dmgkHw7MtpUxMnH/79PnQaVh/Cq8ir?= =?utf-8?q?HpseEe53Y4v2B2NpvROkDa/seTGzsC19dW1+l3oMXwey5z2y9UVVDo8mKicsOwf60?= =?utf-8?q?fUoWPOlXjYlFo8fCuouxhUaB7OL3xsUTdsWlpiVqvzV3u5x01C7pYOgHQNBtAFvge?= =?utf-8?q?ZdnatkiohODYmntVpWMlaOZX1DJiIB0gF6mNz0kQ9eIs24xkOqFWs+qjUWZLT4aad?= =?utf-8?q?iaZALaDO0ffLjOE4qV6yh/8XrqFWXGZAGsLyOkUvOXe9p/ujq8Eliq7Xg1uZLJw+1?= =?utf-8?q?i/JNR0s7yc5wwytu9eNj1IiMJog9etJ3/aMaLHgnDUylxFcUPNmKegTpTbixay8U5?= =?utf-8?q?zKkNX9+3Tj0bKCn1gavIs+YtT6FNZW9wuwqRyEz1mdg8nwcOKVpF0sXk5vlEL7T3d?= =?utf-8?q?dViyOL7q5XkPCx6N8+6cA/jlrj/FimtksNipr1g+Svvzu86YRF5WEsZaZjyd/D6y2?= =?utf-8?q?AALLjcizTHiwvtYkj4GR4i+e+nR4ummkyiIvPFA6ag7CTxEWiOOWDjjk9KLnsl3lo?= =?utf-8?q?HnT543z1HjMMefA96LmETOTL9hb7WzIFecxG1TcaSX9nnrcuUNo/u6Zfuqd/cPxdA?= =?utf-8?q?vR8yTtBKyqCL7258wBUszlMKPONnGd01ahMROho9h97IFj4qw8T+gi1YzdylG9vLQ?= =?utf-8?q?abSKItMkknhWvRq5NJztepWpK9u/AaMyBLX635XLJXi6i3LAHi9FsQ+//D4jpwX/9?= =?utf-8?q?dgIIgAAQroyZ4sYFf3dK7nMIvw6kHBaP4RmF84yfZUuJnJEceCR6Vv3PC6QUOzJMZ?= =?utf-8?q?S+S7B3bdxwPUkpt2Ng2nc0VbOT8dn2Re7MXTwzDXssK+1A3Ek0upMsl60ZtL64K6M?= =?utf-8?q?aLd+S4KB7sL44v0LB5eg7ERa9mkR7tKCxHpHBrtdAZAaohhEV/aWDUCSnGT+mjoZQ?= =?utf-8?q?YvzeUDYOOKvLUgf9ydeh9tBP28vOf4WulNm9vGbBslQ8EfJlg0J9/J3Tn7FtBM98f?= =?utf-8?q?lqOJ7FehYLDjApa+HcsCvv47Fu93cIMJNYRU+bUN2k19CV287So0A+1pwVc4EcOid?= =?utf-8?q?gXDRdYyeJEqZF/VEmU436BxykXUrIDmVek9UPQS7MCP1A8BwwwT3LV6OiqsZZx6kk?= =?utf-8?q?boIHD84EuUH3qiPigYkBpbHSo88bnmFtJD22kHKLTd42wADrpel3/xGt3dfOtJUrt?= =?utf-8?q?S7Rv8piZMCZ2TktmNP+WzmYPlJN562QtKYYSMydWxG6Ohg8MWeHs9LVWOFLPfBw5N?= =?utf-8?q?1QlgiBbO6EtHNbsYGlu5fEnGvrm23GykwJmyqFL5fx9x0NkNzvQEx0+RnXGUqFmlh?= =?utf-8?q?UkFYSpmnyMB4GHtmsJlOFlMD1jwb2B97KjO4XTCHkRZyofUe/L7bnaQmTgn6aVnG7?= =?utf-8?q?CSHNJqCBYqgCLRT6mTUEhjLBnd0JO0yg=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 950c6d75-ecac-4771-7c14-08da1b9ecad8 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8616.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2022 09:36:44.9385 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BpIIM1C5pDpEjrlV0/H+9/SlOts+Wlj56MEf8UR5QJihAC/6i+r4DHUb2r3X12IzDAOXKguONI1BoU1JTT1l8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0401MB2457 While 97af062b89d5 ("IOMMU/x86: maintain a per-device pseudo domain ID") took care of not making things worse, plugging pre-existing leaks wasn't the purpose of that change; they're not security relevant after all. Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monné Reviewed-by: Kevin Tian --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1238,8 +1238,9 @@ int __init iommu_alloc(struct acpi_drhd_ drhd->iommu = iommu; iommu->reg = ioremap(drhd->address, PAGE_SIZE); + rc = -ENOMEM; if ( !iommu->reg ) - return -ENOMEM; + goto free; iommu->index = nr_iommus++; iommu->cap = dmar_readq(iommu->reg, DMAR_CAP_REG); @@ -1260,8 +1261,9 @@ int __init iommu_alloc(struct acpi_drhd_ printk(VTDPREFIX "cap = %"PRIx64" ecap = %"PRIx64"\n", iommu->cap, iommu->ecap); } + rc = -ENODEV; if ( !(iommu->cap + 1) || !(iommu->ecap + 1) ) - return -ENODEV; + goto free; quirk_iommu_caps(iommu); @@ -1272,7 +1274,8 @@ int __init iommu_alloc(struct acpi_drhd_ { printk(XENLOG_ERR VTDPREFIX "IOMMU: unsupported\n"); print_iommu_regs(drhd); - return -ENODEV; + rc = -ENODEV; + goto free; } /* Calculate number of pagetable levels: 3 or 4. */ @@ -1283,7 +1286,8 @@ int __init iommu_alloc(struct acpi_drhd_ { printk(XENLOG_ERR VTDPREFIX "IOMMU: unsupported sagaw %x\n", sagaw); print_iommu_regs(drhd); - return -ENODEV; + rc = -ENODEV; + goto free; } iommu->nr_pt_levels = agaw_to_level(agaw); @@ -1298,8 +1302,9 @@ int __init iommu_alloc(struct acpi_drhd_ iommu->domid_bitmap = xzalloc_array(unsigned long, BITS_TO_LONGS(nr_dom)); iommu->domid_map = xzalloc_array(domid_t, nr_dom); + rc = -ENOMEM; if ( !iommu->domid_bitmap || !iommu->domid_map ) - return -ENOMEM; + goto free; /* * If Caching mode is set, then invalid translations are tagged