Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1001493pxf; Thu, 8 Apr 2021 19:26:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhQW578r90MCAhpch92Mh+4fJbJbrgny81D4PTzwTaqJcnsTYoZmuYq96ezcAeoUgZjTGA X-Received: by 2002:a62:d414:0:b029:217:24b8:a5b9 with SMTP id a20-20020a62d4140000b029021724b8a5b9mr10723840pfh.41.1617935175047; Thu, 08 Apr 2021 19:26:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617935175; cv=none; d=google.com; s=arc-20160816; b=FBI3xhPX/Fmb0ms/y88f110Oa+Y9lnCR4vKzK+cXGRNpVGgwqbUu5lCF4SpmVnd8Wt pAko8DXD/oGfqmvUDvcvx0z4rIA3ddxxrdsBEZ7nI3ac+tFBksWxfo4N5kYDO8gH2e11 QWrxgY0VPQ0wyy7IVxDXV1X1DldGt2ww2h3WnF0zMXeM6qdazzqaj3p82PtfUQQEtnzL v16lWevmce/OkwlmORL4GFgMioyP2+Q7Cybnl9/cpW8BGCOq0nfhGYLyq77W0UNkmY/b OVyK4+zVsz2luvJWSS0SqbbpOchshGeBxsvu0+jyjgOJmDcOK4zoetvBlGmVE8C5rVt2 sGUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=mOZ83lWyBCeICtWu3/0oO47MuS4gfmvFARW76Re2qv0=; b=ie3XIKskYC9LxJb6ZqGmNHnVA90TjJBwxEgp3UhE+ZyILj5JjX7SdKw4bluAMwPxj7 Qku8shoz+Ld+zrj2vdbypSc/GrJZQ6ccU1/upBHl50O0sli/6rk9ZWvXG/vFHaDGZhll WlPjahQLo7OPleuldmeSf7g6ewX4gYm62tFODZIkRmnVIII+fdjzW+d13BPZ3Y/kQeL0 Ej9aSfwH9jSwRj2im/pD8x3CKhWq2na5CJcJyTmma0f1+SzlXBPtKeeySRPxDz8BhpOY DFDlGnrUuSe7LTmsAr2ZPJhzilfnL3f0TF6jPUkEeDdUg9kxRbJiBScCb2z6RAO0ms8T 801g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=pnksMaMb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v3si1282898pjh.78.2021.04.08.19.26.02; Thu, 08 Apr 2021 19:26:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=pnksMaMb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232808AbhDICZ2 (ORCPT + 99 others); Thu, 8 Apr 2021 22:25:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232638AbhDICZ2 (ORCPT ); Thu, 8 Apr 2021 22:25:28 -0400 Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96B05C061760; Thu, 8 Apr 2021 19:25:14 -0700 (PDT) Received: by mail-pj1-x1035.google.com with SMTP id i4so2146698pjk.1; Thu, 08 Apr 2021 19:25:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=mOZ83lWyBCeICtWu3/0oO47MuS4gfmvFARW76Re2qv0=; b=pnksMaMbcw2Kq0VfamCd+NoAaO/msJ0ONuaV1DRYfmYaIxFlb9Ibt91G75cXrhGHnT oh99VNTSluVMwcibbbsy0eSx08PUlHc2G9NyJReUrCKHZAfAJ2WLcXAiqM2Cc7Iwht4/ gcwmXs3iaSNBQRmUKQkRag7za8cHgINf07A7GYJ8ZWWtqTKKHZ29r5wy/rzfmcye/DQt GmQBcwgJpTvqx0xLEh0IWvpFgnvKRHeQJdV3S/5m6Fnxzh4PBX89o/yUN/42lnJgf0mG dRJzaaXjBgtTQKGyVeyK/pKEgKQ36d9BjVvGt/NJ2vTr2bycj0w0SVluU2W4S7D2lrud bcEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=mOZ83lWyBCeICtWu3/0oO47MuS4gfmvFARW76Re2qv0=; b=eX+CuzwXYN0NdLwLXBzt+1QfNzmj6rRjDPC7r/BwaoyavbNJO5SopUXutROaUpaPgU VIP8gFkWVEbD2ltrk1mVN+sJXUz2N9cTonug84qaj56qxoeVQkME7M/AtmSGc7FuaJa8 wot8Su4POQX8cmAIqtrGYBWlk/IlRWYLW/7TM9u6btNqQOamG99UDkZSHaxUSoFgKD0X qp3MDk8EgOvgxq16VTw8DWiwESZzjwOvncIapl+RTsHUdYjmfx8jO0XI2EGaN9pw4a5l CG5p0Wpo89a+aOmAeQ1SExdiXA0qfQe7YGQLG5LBqmZGY2G5KoBTvQtY1CwlSFvzrgNY hA5Q== X-Gm-Message-State: AOAM531i/eOB9FKk22f6OHJowONKoF7jltBExkp8K8tEUQFTuBfXgISu VJSmkLORtESp792nAf+3Ukvsr/WPRQ== X-Received: by 2002:a17:902:b602:b029:e6:cabb:10b9 with SMTP id b2-20020a170902b602b02900e6cabb10b9mr10449221pls.47.1617935113792; Thu, 08 Apr 2021 19:25:13 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.39]) by smtp.gmail.com with ESMTPSA id r10sm608769pjf.5.2021.04.08.19.25.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Apr 2021 19:25:13 -0700 (PDT) From: lihaiwei.kernel@gmail.com To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: pbonzini@redhat.com, seanjc@google.com, vkuznets@redhat.com, wanpengli@tencent.com, jmattson@google.com, joro@8bytes.org, Haiwei Li Subject: [PATCH v2] KVM: vmx: add mismatched size assertions in vmcs_check32() Date: Fri, 9 Apr 2021 10:24:56 +0800 Message-Id: <20210409022456.23528-1-lihaiwei.kernel@gmail.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Haiwei Li Add compile-time assertions in vmcs_check32() to disallow accesses to 64-bit and 64-bit high fields via vmcs_{read,write}32(). Upper level KVM code should never do partial accesses to VMCS fields. KVM handles the split accesses automatically in vmcs_{read,write}64() when running as a 32-bit kernel. Reviewed-and-tested-by: Sean Christopherson Signed-off-by: Haiwei Li --- v1 -> v2: * Improve the changelog arch/x86/kvm/vmx/vmx_ops.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/x86/kvm/vmx/vmx_ops.h b/arch/x86/kvm/vmx/vmx_ops.h index 692b0c3..164b64f 100644 --- a/arch/x86/kvm/vmx/vmx_ops.h +++ b/arch/x86/kvm/vmx/vmx_ops.h @@ -37,6 +37,10 @@ static __always_inline void vmcs_check32(unsigned long field) { BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0, "32-bit accessor invalid for 16-bit field"); + BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2000, + "32-bit accessor invalid for 64-bit field"); + BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2001, + "32-bit accessor invalid for 64-bit high field"); BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x6000, "32-bit accessor invalid for natural width field"); } -- 1.8.3.1