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 9968DC43458 for ; Tue, 7 Jul 2026 08:26:25 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh17j-0000Ks-70; Tue, 07 Jul 2026 04:25:47 -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 1wh17h-0000KP-BM for qemu-devel@nongnu.org; Tue, 07 Jul 2026 04:25:45 -0400 Received: from linux.microsoft.com ([13.77.154.182]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh17f-0001O9-Rt for qemu-devel@nongnu.org; Tue, 07 Jul 2026 04:25:45 -0400 Received: from laptop.localdomain (unknown [86.121.140.206]) by linux.microsoft.com (Postfix) with ESMTPSA id B10BC20B716C; Tue, 7 Jul 2026 01:25:36 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com B10BC20B716C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1783412738; bh=VRbYtJTgywWcZK2ts6u+ZlPQujaG2QuZSP5iIQ9swJU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WaqMJopfpbeIXIDerr1IfCvnU34HBHxqcJ3CnuEcrcuRLLQLbRV997LRKR2+z57U0 dtZKdEdxasVRRiJbiPGa+l9SbxBeT66JI80uFAO6w9X57+tl0EgVTOL94RTRhrOxh0 dDnt8OZMTSfmybcP1fGMbstathcFb/E/EPu2wCYQ= From: =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= , Wei Liu , Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= , Paolo Bonzini , Wei Liu , Magnus Kulke Subject: [PATCH 2/5] target/i386/mshv: abort when hv_vp_register_page setup fails Date: Tue, 7 Jul 2026 11:25:28 +0300 Message-ID: <20260707082531.178539-3-dblanzeanu@linux.microsoft.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707082531.178539-1-dblanzeanu@linux.microsoft.com> References: <20260707082531.178539-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 126ca40b48..3d92d4dbad 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