From patchwork Wed Jun 14 07:02:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 13279578 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 0F986EB64D9 for ; Wed, 14 Jun 2023 07:03:16 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.548475.856447 (Exim 4.92) (envelope-from ) id 1q9KX2-0002ic-IN; Wed, 14 Jun 2023 07:03:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 548475.856447; Wed, 14 Jun 2023 07:03:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1q9KX2-0002iV-FH; Wed, 14 Jun 2023 07:03:04 +0000 Received: by outflank-mailman (input) for mailman id 548475; Wed, 14 Jun 2023 07:03:03 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1q9KX1-0002iN-74 for xen-devel@lists.xenproject.org; Wed, 14 Jun 2023 07:03:03 +0000 Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2060e.outbound.protection.outlook.com [2a01:111:f400:fe13::60e]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 808a232b-0a81-11ee-b232-6b7b168915f2; Wed, 14 Jun 2023 09:03:02 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DBAPR04MB7462.eurprd04.prod.outlook.com (2603:10a6:10:1a0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.37; Wed, 14 Jun 2023 07:02:59 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c%5]) with mapi id 15.20.6455.039; Wed, 14 Jun 2023 07:02:58 +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: 808a232b-0a81-11ee-b232-6b7b168915f2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VKjJGLUBrqrwXGioXAYZJM+KcHZN7ZeoGrtME1bIxvBxCuJJHDJ7RumxEsDSxqf1nRQ3dGTooOM3ZAYq5WPLsaBSZmXJdXPdxrlbBANH6Xd/grcMRLP/Wg99NnFA9WetAjjzw9c22VND0ZvYCsyWR0cjMVmUo0+N2tZH5LS0vUGlBtkHLlZBo4sioQJnVBsYDnta1Qlr/loyieO15sqhFVR226leizU3aZghqT7E7IdutfCtPn37AnJvzQ2XLTQlef+QOTF/ua/k+GBi6KpHVFpkdHocb4+KBZni7gPuhI/ghKZ/DbrtXyNCTyWUE1ah/9Pt65U8rxc4HODUduX21A== 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=yHO5cRG6rhGhB3CnH795D3Agajtj0bX3Uqvd4xLoY4g=; b=B0/YdOHRMT78Qj78XWf1lFuW+YqB8U+DaPaKZZofdD/D3JkqkHPDksTtIFmcsOy0EwckpMokGBmvsRouxlN4kTs8MWWbnSomfJdCXMRGDR9ZXEoXpbZPnkjURW4r+CQ6CQKjUYOwD+AiA8+nLfB4Zqxle5RZzZJyn/hilIpPTx2S+XgJT4v3Q9viVC8VBTmy+T23/zb1DNiy1Q+BmBkzWEm7oeSGuPS169D4iZeENHz1Lr6FyiZBS0U7zbIsEo+L2OtON9dpGnsGdRnGvmMekj66nWOkNdFpggVp4vQOIiyWW/kDi9pd9eBSheSWiXngTKwZE25bJg0oHVegm2lhLg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yHO5cRG6rhGhB3CnH795D3Agajtj0bX3Uqvd4xLoY4g=; b=EbjKjH03beAKzwKVMpToHhE5fz7rEZvcdOj3YD5DiOz4eKgWrsgW1lPIO2gVHmXdEe2nusdwqkWJ4C48iiuxtMc8QAzvdUqirOsZ8Xo6W50CV0Spb37ugnMhLWeGAL6bWuN8v+DUM0jlsQpVGNZ8MhikpJKU2mThoI9bG8bc9gccUC3Rix3PTvxjMUxCb34MTtI8mc2/hAaXl08YPeYPfQKjqCi3mJFSBy2reyabuTwWk/UOFRcNwTHrZ4PAXVUv42xourxjMix9FYXonlq7AaiZ6Cs9xlENvxrBnQHE2MtDczTKoNIJB7uwT86NZybvCqDGXCWElF1SlZhQZ7NJrw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <3c6fc607-630d-c52f-06b8-4c5aae97f21f@suse.com> Date: Wed, 14 Jun 2023 09:02:56 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Content-Language: en-US To: "xen-devel@lists.xenproject.org" Cc: Anthony Perard , Wei Liu , Juergen Gross From: Jan Beulich Subject: [PATCH] libxg: shrink variable scope in xc_core_arch_map_p2m_list_rw() X-ClientProxiedBy: FR3P281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1d::10) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DBAPR04MB7462:EE_ X-MS-Office365-Filtering-Correlation-Id: deac75ce-a445-44db-cdbd-08db6ca5627d X-LD-Processed: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba,ExtFwd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zZ/1dJDVSZ5NVRqOX4FWviLYtEB6srdWBACmKKuM7Dl7xb5PkwZcyVxBDpOdjJaOPd4zD6vBTtpXrob8Ji+9zpqH5tlDj/ED4v1AgMY+d7c+z96vDLRSCvGgFTRrxsAHEjqLuQrFcKqEpWIX55TADmoaOQLyijjwi9EEJBXbvNmBmo4tnWqgDFaxW0fGFgzyE8dJEuXB+frShISDuDEtP0fxTIK2uf4NDCZTePxuifjgMOplgbXXfHXCtbWn63YKlnpaO3/g7bi02TjwtudvdrH9IV8CGYKRCkJb6hhojN7b2fKyAygfSiK/r2NSoy1X2BylW/cb7L1MuPaqnCzAaiqj7XTRPc9qvlAsHwU0ZvDMRTMmjU+ZmLG4yJCGhkFeEWzJhzN5UHDnQAbpBhje0aySjYH+t6weI28AMcf6UmapXT6xWAsB7HHYvUDn8SxLuXQK+9d54FugGXe2FEdQU2pxoflSqQ7C4xEhNaStiCH5KOxEY5A2epPByfB4oDOhW+pqRQi2LetYNEnQb067FbSTNvvhq6FVEfYClq3XKeZ3qWnDgBA1olkjXv1muYgWy9RPPPC1DJX9tSdOaOOROx6i4aUHRs37W5VhGWsjheDm7N9BYE7Tv3S50OYVOe30mvhtzvKxLLUMygy4ZSoTUDwejuyZ2I2fY1V0AsGhdXMYEsfdiBnggXdovDUAldjM X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(366004)(376002)(396003)(346002)(39860400002)(451199021)(31686004)(38100700002)(31696002)(86362001)(8936002)(83380400001)(8676002)(5660300002)(316002)(41300700001)(6916009)(66946007)(66556008)(66476007)(4326008)(54906003)(2616005)(36756003)(478600001)(186003)(107886003)(6506007)(26005)(6512007)(2906002)(6486002)(70780200001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?khB35/KEhXaTx2fXCTMYadBmhEi6?= =?utf-8?q?toYq/Ukx7b3n27R7q9LMdc3T3c9d8dvqZ6s3H9mOr/i/u5wnDUUuyckLVpeUfo8Rc?= =?utf-8?q?Oq/ESI57W/7Ca/Kbjv6tkFe7PJVElEnfHT8rY1TeVK9ha2fS8e8fpURRQnSByiaWA?= =?utf-8?q?8UzvPoa17ueVAVnifjRs45YifSAgtIWukm1SQoyhA26pteVl1T+o2jS96W4MhLMjd?= =?utf-8?q?r3+mHlg9m1HzWWWH4j1r+lLbuCFPC7kjFCTm0Hp81H2pVqurgV07JKsWgPVGPihUp?= =?utf-8?q?z6Rpi7YycDiY6q2Qm1oi76MboR9aA28z+h0jUYfTBUav99y1l0h8EE6edhkwZP8Bx?= =?utf-8?q?gKf9pqkaaUpK5hlrinZUCbHWPAg2YQDwYbEZrqtpeUO2A9eB0jiOKBIQ2xhMBUilL?= =?utf-8?q?k6sISlW8PJJztFEB/KgDwNnXk0J9bq/uPB6gairGP/DfOLbaljnAwTrISzyW7cGrv?= =?utf-8?q?l33EACogh4phjGXCZEF1kooLpBMtMqOYFak0EfF1A8luroHj6OPbdTq5RxGr6aorN?= =?utf-8?q?Lk6vFBW5j/d1ZIiNk+6qFp8mMy0yeBx/ZV3DbYyVQvA5ieKj2hlwUT6eMJJgTxBep?= =?utf-8?q?k5xABPOSc1JtV4c5wcotOMfdT/fRWi3tFWSvZRJnjLga2HA2XSkkVsAXVWEPtgYo5?= =?utf-8?q?W1y970SMDLO87JKAopstiJDyQ0mLRVo7ASwhULgKhgRt8BWZL+jdurxGacUX93avs?= =?utf-8?q?DQIegf1jxWCK2prMtnf7+wsBPlxF/kwIi2S8iqbPX4eQK673G/vDTfFBNX+BRIsN8?= =?utf-8?q?CEPFy9FJOyafwrrypfqd+6/CdQW1nB0Hi/+zArZMInqcAYNwU8b2+/Zvu59Ruee3M?= =?utf-8?q?jGx5NK2Fe7pqGUlWOk03lmLGTZVSF7Ii0sjO1vRPyCnrFvXD52iKDYEmkRSPfyBkH?= =?utf-8?q?+geYbaSmOBbbfnCf+CG0QUa7zlSW7JDcriT3XBSgJC9LnuGgi4+veZ+S9GvebmHgl?= =?utf-8?q?6G9wxLKqW0LlFmrHQ2IIibwB7LGNXDKGp2qkuXQCfiwR0xq+HkUcfv58ngYy8Ttqy?= =?utf-8?q?aTwdPKD0EgJb1NRKCYUXyX3oSxTDLfdqZm5hJd82b6PYdVr4X2E0wQm7OctkPRZvh?= =?utf-8?q?+IdvovaJgECRFkq5OjgZLW3zkVyLA1laZPaeIY/2Fl/1znZYj9W2d/ljxDoqEAXxr?= =?utf-8?q?S/MM856BUzFmK+5JJRjB6fP0aH+ishSvPraWZEQspTXOlVJVy13gcip43X2w5sCSH?= =?utf-8?q?lab4oYG9g+MrG3MMX/ienTWk3/kXELQbG5gM8ImG8WY/gQusiPfeUL+c6ESfN79Fn?= =?utf-8?q?+wabiMfJkKSqyWqD/By5y2A1BLFR9rR0GUuu6a5YZHa3NAtb6hOTvPnywrMluwkWP?= =?utf-8?q?3vvE3TEnJVVO4HhhBXvnQBTJ3zq7RguMH5TzEMfUWIVaZh7yoxXRbPU8V1hD0BEuF?= =?utf-8?q?zkap9lJepVqk+BzGUwrj/CD2pTyx4K4v7jSqANLDVsVq2+akq8gFlxkSXpID/KRiD?= =?utf-8?q?3FoYo8o5K9mo58tgCjfsOZ0BddJbCJhjgWyBb0JWdnvZryYua/lAv1GE+KhZ6a/HA?= =?utf-8?q?vgF3dl/MmknA?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: deac75ce-a445-44db-cdbd-08db6ca5627d X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2023 07:02:58.2334 (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: Drrne90tasiDh3CYlY8jgK+DdtzH2oNTFJoF5HiXD42fZDSt+DEwzflwFJuWPXzDbDIlMgwMTUpDSxfeO0CFtw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR04MB7462 This in particular allows to drop a dead assignment to "ptes" from near the end of the function. Coverity ID: 1532314 Fixes: bd7a29c3d0b9 ("tools/libs/ctrl: fix xc_core_arch_map_p2m() to support linear p2m table") Signed-off-by: Jan Beulich Acked-by: Anthony PERARD --- v2: Much bigger change to limit the scope of "ptes" and other variables. --- a/tools/libs/guest/xg_core_x86.c +++ b/tools/libs/guest/xg_core_x86.c @@ -92,11 +92,9 @@ xc_core_arch_map_p2m_list_rw(xc_interfac uint64_t p2m_cr3) { uint64_t p2m_vaddr, p2m_end, mask, off; - xen_pfn_t p2m_mfn, mfn, saved_mfn, max_pfn; - uint64_t *ptes = NULL; + xen_pfn_t p2m_mfn, saved_mfn; xen_pfn_t *mfns = NULL; - unsigned int fpp, n_pages, level, n_levels, shift, - idx_start, idx_end, idx, saved_idx; + unsigned int fpp, level, n_levels, idx_start, idx_end, saved_idx; p2m_vaddr = GET_FIELD(live_shinfo, arch.p2m_vaddr, dinfo->guest_width); fpp = PAGE_SIZE / dinfo->guest_width; @@ -152,8 +150,10 @@ xc_core_arch_map_p2m_list_rw(xc_interfac for ( level = n_levels; level > 0; level-- ) { - n_pages = idx_end - idx_start + 1; - ptes = xc_map_foreign_pages(xch, dom, PROT_READ, mfns, n_pages); + unsigned int n_pages = idx_end - idx_start + 1; + uint64_t *ptes = xc_map_foreign_pages(xch, dom, PROT_READ, mfns, n_pages); + unsigned int shift, idx; + if ( !ptes ) { PERROR("Failed to map %u page table pages for p2m list", n_pages); @@ -169,18 +169,21 @@ xc_core_arch_map_p2m_list_rw(xc_interfac if ( !mfns ) { ERROR("Cannot allocate memory for array of %u mfns", idx); + out_unmap: + munmap(ptes, n_pages * PAGE_SIZE); goto out; } for ( idx = idx_start; idx <= idx_end; idx++ ) { - mfn = (ptes[idx] & 0x000ffffffffff000ULL) >> PAGE_SHIFT; + xen_pfn_t mfn = (ptes[idx] & 0x000ffffffffff000ULL) >> PAGE_SHIFT; + if ( mfn == 0 ) { ERROR("Bad mfn %#lx during page table walk for vaddr %#" PRIx64 " at level %d of p2m list", mfn, off + ((uint64_t)idx << shift), level); errno = ERANGE; - goto out; + goto out_unmap; } mfns[idx - idx_start] = mfn; @@ -197,6 +200,8 @@ xc_core_arch_map_p2m_list_rw(xc_interfac if ( level == 2 ) { + xen_pfn_t max_pfn; + if ( saved_idx == idx_end ) saved_idx++; max_pfn = ((xen_pfn_t)saved_idx << 9) * fpp; @@ -210,7 +215,6 @@ xc_core_arch_map_p2m_list_rw(xc_interfac } munmap(ptes, n_pages * PAGE_SIZE); - ptes = NULL; off = p2m_vaddr & ((mask >> shift) << shift); } @@ -218,8 +222,6 @@ xc_core_arch_map_p2m_list_rw(xc_interfac out: free(mfns); - if ( ptes ) - munmap(ptes, n_pages * PAGE_SIZE); return NULL; }