From mboxrd@z Thu Jan 1 00:00:00 1970 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (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 DB144C43458 for ; Tue, 7 Jul 2026 22:17:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whE6C-0003tB-Mz; Tue, 07 Jul 2026 18:17:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whE6A-0003sa-IJ for qemu-devel@nongnu.org; Tue, 07 Jul 2026 18:17:02 -0400 Received: from linux.microsoft.com ([13.77.154.182]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whE69-0000KB-2f for qemu-devel@nongnu.org; Tue, 07 Jul 2026 18:17:02 -0400 Received: from laptop.localdomain (unknown [86.121.140.206]) by linux.microsoft.com (Postfix) with ESMTPSA id 0CC8820B7166; Tue, 7 Jul 2026 15:16:52 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 0CC8820B7166 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1783462614; bh=soNbHmugulup9sC/v+wVwnkS2OglUYxoHnlwOg/fARI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JMR8EwVS16wWPXClnXOPYpKbh8pj9fFPUINoJ2Sa1FhCjYfJKR5JELyqVX4MZxVCR 2erq/fl0IzkJh4XicQX5PPZ8qUpP+1tsNqC86GssL4qrdngbDSuDNtVR22m1hApqNh nVfpJCnXLayqNGz9udhCE2vbXLFUpHuUedC7zuSw= From: =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= , Magnus Kulke , Wei Liu , Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= , Wei Liu Subject: [PATCH 2/5] target/i386/mshv: abort when hv_vp_register_page setup fails Date: Wed, 8 Jul 2026 01:16:42 +0300 Message-ID: <20260707221645.24557-3-dblanzeanu@linux.microsoft.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707221645.24557-1-dblanzeanu@linux.microsoft.com> References: <20260707221645.24557-1-dblanzeanu@linux.microsoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=13.77.154.182; envelope-from=dblanzeanu@linux.microsoft.com; helo=linux.microsoft.com X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org In case the call to mmap fails, we log an error and abort to signal there is something wrong with the system. Check the register page version and compare with the expected version and abort in case of a mismatch. Fixes: a173f8f170 Signed-off-by: Doru Blânzeanu --- target/i386/mshv/mshv-cpu.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index 1c433c408c..c782715497 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -2049,6 +2049,7 @@ void mshv_arch_init_vcpu(CPUState *cpu) CPUX86State *env = &x86_cpu->env; AccelCPUState *state = cpu->accel; size_t page = HV_HYP_PAGE_SIZE, xsave_len; + void *regs_page; void *mem = qemu_memalign(page, 2 * page); int ret; X86XSaveHeader *header; @@ -2060,15 +2061,20 @@ void mshv_arch_init_vcpu(CPUState *cpu) > HV_HYP_PAGE_SIZE)); /* mmap the registers page */ - void *rp = mmap(NULL, page, PROT_READ | PROT_WRITE, + regs_page = mmap(NULL, page, PROT_READ | PROT_WRITE, MAP_SHARED, mshv_vcpufd(cpu), MSHV_VP_MMAP_OFFSET_REGISTERS * page); - if (rp == MAP_FAILED) { - warn_report("register page mmap failed, falling back to hypercalls: %s", - strerror(errno)); - env->regs_page = NULL; - } else { - env->regs_page = (struct hv_vp_register_page *) rp; + if (regs_page == MAP_FAILED) { + /* This shouldn't fail, so we treat it as a fatal error */ + error_report("register page mmap failed: %s", strerror(errno)); + abort(); + } + env->regs_page = (struct hv_vp_register_page *) regs_page; + + if (env->regs_page->version != HV_VP_REGISTER_PAGE_VERSION_1) { + error_report("register page version mismatch: got %u, expected %u", + env->regs_page->version, HV_VP_REGISTER_PAGE_VERSION_1); + abort(); } state->hvcall_args.base = mem; -- 2.53.0