Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp4890612rwi; Mon, 17 Oct 2022 12:12:12 -0700 (PDT) X-Google-Smtp-Source: AMsMyM61SQdrVxjn1Nhl/2GJPehugmjjGoWrXHjUF6xU539pZdXuPg5mYy6UQ2+SHYyDjLpBtev1 X-Received: by 2002:a05:6402:5107:b0:45d:409:1337 with SMTP id m7-20020a056402510700b0045d04091337mr11909425edd.185.1666033932412; Mon, 17 Oct 2022 12:12:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666033932; cv=none; d=google.com; s=arc-20160816; b=Qot6auGj/SzZ25fO1rCmiGN0DgS8/wrmy0eAgaAwJYp6vta3fQazBGmH3LGSA81NYz gN5f+IfoeMFTYLjX2s/1+OGnkEP9pbXZTWW76spJPfXoMIrBgxM0T0uqI5QCUQyqMcA+ roe27rWMm2kXk76UyaN3URqwDpQTQ15IZIQkMXk2rDdrWzSD2An20QMKXDjneTFNazx2 N5AMMi7VfcvcGTipMTDXBEfk8yMZ7UtVnmLU1UN21KAnrJ16ut2OAo9vSXpszeKxtJn+ swQkAHLpg9e+tQa9pb4uw90IB0uhdeEhul4ON2DugbmSdbxXTvU9y0lhjtD3PZ/265k6 2voQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=eZKKrbExtmD0rsa2bympXY9to9BTSXngtL1pwxUGFZA=; b=jJ1PVdWMRsSBrkgJufUdlIHaQudrtzU+ZMiS2bn6nmnMX9JXh9d7hJRIilETX+XxpL bT7KPfQt/4cx72ZA7DB2fB1zqFHFyEFz1pm9g/PP4LW/BLjiZX4fUN92jqWkWKANFQLL rJo6SQ/fV+L7LdPpjaEOfZZKeFRXmuP1TrhwyFtLvyQrW8FvHNCotm68/2oYxn8DhsuS pNFgvVqgQImxODkZJwug4hGjRVW5qvfiz5aWQD7QPGqqZJBuVBjsaA3nhldKRs2zLr6I jMumOfxr05P7cC7baYsDaOpDA96iUpv2vGTbXAMEpYom52tQJvTnOO8ZMl4kXAiGlPC5 K3Kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=ESNRabub; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dn20-20020a17090794d400b007123952b00dsi9884946ejc.100.2022.10.17.12.11.46; Mon, 17 Oct 2022 12:12:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=ESNRabub; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230268AbiJQSqS (ORCPT + 99 others); Mon, 17 Oct 2022 14:46:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230212AbiJQSqP (ORCPT ); Mon, 17 Oct 2022 14:46:15 -0400 Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com [207.171.184.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 142BA72B5D; Mon, 17 Oct 2022 11:46:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1666032372; x=1697568372; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eZKKrbExtmD0rsa2bympXY9to9BTSXngtL1pwxUGFZA=; b=ESNRabubKwAczlw6O9f60e5r64z83ZA3GXCY5dUiFW2yjhT64xq6GdeB hsa4YBLrYEHHONLty4WWfp3iFDSxC/ACW7tYzJx6KEdmda10v8mLGddAT r9ApCZjIHJ1bIsWifcnEPYZIjh9qAfhQw2x2c3gNGpRogXQjP1FuD/j8e M=; X-IronPort-AV: E=Sophos;i="5.95,192,1661817600"; d="scan'208";a="270350723" Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO email-inbound-relay-iad-1d-8bf71a74.us-east-1.amazon.com) ([10.25.36.210]) by smtp-border-fw-9102.sea19.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Oct 2022 18:46:09 +0000 Received: from EX13MTAUWC001.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan3.iad.amazon.com [10.40.163.38]) by email-inbound-relay-iad-1d-8bf71a74.us-east-1.amazon.com (Postfix) with ESMTPS id 45581C19E6; Mon, 17 Oct 2022 18:46:07 +0000 (UTC) Received: from EX19D020UWC004.ant.amazon.com (10.13.138.149) by EX13MTAUWC001.ant.amazon.com (10.43.162.135) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 17 Oct 2022 18:45:54 +0000 Received: from f02f4b0103c5.ant.amazon.com (10.43.162.35) by EX19D020UWC004.ant.amazon.com (10.13.138.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.1118.15; Mon, 17 Oct 2022 18:45:53 +0000 From: Alexander Graf To: CC: , , Paolo Bonzini , Sean Christopherson , "Andrew Randrianasulu" , Thomas Huth Subject: [PATCH 2/3] KVM: x86: Make filter arg for set_msr_filter() Date: Mon, 17 Oct 2022 20:45:40 +0200 Message-ID: <20221017184541.2658-3-graf@amazon.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20221017184541.2658-1-graf@amazon.com> References: <20221017184541.2658-1-graf@amazon.com> MIME-Version: 1.0 X-Originating-IP: [10.43.162.35] X-ClientProxiedBy: EX13D25UWB003.ant.amazon.com (10.43.161.33) To EX19D020UWC004.ant.amazon.com (10.13.138.149) Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_HI,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the next patch we want to introduce a second caller to set_msr_filter() which constructs its own filter list on the stack. Refactor the original function so it takes it as argument instead of reading it through copy_from_user(). Signed-off-by: Alexander Graf --- arch/x86/kvm/x86.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index b0c47b41c264..19f060ce577f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -6399,26 +6399,22 @@ static int kvm_add_msr_filter(struct kvm_x86_msr_filter *msr_filter, return 0; } -static int kvm_vm_ioctl_set_msr_filter(struct kvm *kvm, void __user *argp) +static int kvm_vm_ioctl_set_msr_filter(struct kvm *kvm, + struct kvm_msr_filter *filter) { - struct kvm_msr_filter __user *user_msr_filter = argp; struct kvm_x86_msr_filter *new_filter, *old_filter; - struct kvm_msr_filter filter; bool default_allow; bool empty = true; int r = 0; u32 i; - if (copy_from_user(&filter, user_msr_filter, sizeof(filter))) - return -EFAULT; - - if (filter.flags & ~KVM_MSR_FILTER_DEFAULT_DENY) + if (filter->flags & ~KVM_MSR_FILTER_DEFAULT_DENY) return -EINVAL; - for (i = 0; i < ARRAY_SIZE(filter.ranges); i++) - empty &= !filter.ranges[i].nmsrs; + for (i = 0; i < ARRAY_SIZE(filter->ranges); i++) + empty &= !filter->ranges[i].nmsrs; - default_allow = !(filter.flags & KVM_MSR_FILTER_DEFAULT_DENY); + default_allow = !(filter->flags & KVM_MSR_FILTER_DEFAULT_DENY); if (empty && !default_allow) return -EINVAL; @@ -6426,8 +6422,8 @@ static int kvm_vm_ioctl_set_msr_filter(struct kvm *kvm, void __user *argp) if (!new_filter) return -ENOMEM; - for (i = 0; i < ARRAY_SIZE(filter.ranges); i++) { - r = kvm_add_msr_filter(new_filter, &filter.ranges[i]); + for (i = 0; i < ARRAY_SIZE(filter->ranges); i++) { + r = kvm_add_msr_filter(new_filter, &filter->ranges[i]); if (r) { kvm_free_msr_filter(new_filter); return r; @@ -6872,9 +6868,16 @@ long kvm_arch_vm_ioctl(struct file *filp, case KVM_SET_PMU_EVENT_FILTER: r = kvm_vm_ioctl_set_pmu_event_filter(kvm, argp); break; - case KVM_X86_SET_MSR_FILTER: - r = kvm_vm_ioctl_set_msr_filter(kvm, argp); + case KVM_X86_SET_MSR_FILTER: { + struct kvm_msr_filter __user *user_msr_filter = argp; + struct kvm_msr_filter filter; + + if (copy_from_user(&filter, user_msr_filter, sizeof(filter))) + return -EFAULT; + + r = kvm_vm_ioctl_set_msr_filter(kvm, &filter); break; + } default: r = -ENOTTY; } -- 2.37.1 Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B Sitz: Berlin Ust-ID: DE 289 237 879