From patchwork Tue May 17 09:54:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 9111211 Return-Path: X-Original-To: patchwork-xen-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 71DC8BF29F for ; Tue, 17 May 2016 09:56:24 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id A4F8020268 for ; Tue, 17 May 2016 09:56:23 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8B4EE201FE for ; Tue, 17 May 2016 09:56:22 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2bi1-0002CH-9d; Tue, 17 May 2016 09:54:37 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2bhy-0002Bv-Sq for xen-devel@lists.xenproject.org; Tue, 17 May 2016 09:54:35 +0000 Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id 0B/4F-03294-A5AEA375; Tue, 17 May 2016 09:54:34 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrHIsWRWlGSWpSXmKPExsXS6fjDSzfylVW 4wRoBi+9bJjM5MHoc/nCFJYAxijUzLym/IoE148SUdUwFbZIVHc+0GhifC3cxcnAICeRJXDwd 0sXIycErYCdxY9sKFhBbQsBQYt/8VWwgNouAqkTzpfVgNpuAukTbs+2sIK0iAgYS544mgYSZB QIlbt2fwQhiCwuYS9y7+4oFpIRXQFDi7w5hiBI7iRmfV7BMYOSahZCZhSQDYWtJPPx1C8rWll i28DUzSDmzgLTE8n8cEGFbiWNL/7KjKgGxPSQezVzGvoCRYxWjRnFqUVlqka6hgV5SUWZ6Rkl uYmYOkGesl5taXJyYnpqTmFSsl5yfu4kRGHb1DAyMOxi3dTkfYpTkYFIS5X150SpciC8pP6Uy I7E4I76oNCe1+BCjBgeHwLZdqy8wSrHk5eelKknw6r8EqhMsSk1PrUjLzAFGBkypBAePkgivG 0iat7ggMbc4Mx0idYpRUUqc1xUkIQCSyCjNg2uDReMlRlkpYV5GBgYGIZ6C1KLczBJU+VeM4h yMSsK87iBTeDLzSuCmvwJazAS0eIKZBcjikkSElFQDo9ntstA4LeVGY8ZPoj8UlxU0mcrvCt5 7L5DF8OUqLb09rOva3/gWe7J3Tvlbs8yfy/m0yNYGF629vWs87fb+4z3Jd2ergJV7iEOAO8+9 icpMHSmdvh9ruPuCNC0za7e/u81w43P3lnKGY+ryHie2/GWIUrA19T/rGHF7csOP7v+pyzfX8 UQosRRnJBpqMRcVJwIAW7fCxMECAAA= X-Env-Sender: JBeulich@suse.com X-Msg-Ref: server-16.tower-31.messagelabs.com!1463478871!32966762!1 X-Originating-IP: [137.65.248.74] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 8.34; banners=-,-,- X-VirusChecked: Checked Received: (qmail 32756 invoked from network); 17 May 2016 09:54:32 -0000 Received: from prv-mh.provo.novell.com (HELO prv-mh.provo.novell.com) (137.65.248.74) by server-16.tower-31.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 17 May 2016 09:54:32 -0000 Received: from INET-PRV-MTA by prv-mh.provo.novell.com with Novell_GroupWise; Tue, 17 May 2016 03:54:30 -0600 Message-Id: <573B067302000078000EC093@prv-mh.provo.novell.com> X-Mailer: Novell GroupWise Internet Agent 14.2.0 Date: Tue, 17 May 2016 03:54:27 -0600 From: "Jan Beulich" To: "xen-devel" Mime-Version: 1.0 Cc: Andrew Cooper , Wei Liu Subject: [Xen-devel] [PATCH] x86: refine debugging of SMEP/SMAP fix X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Instead of just latching cr4_pv32_mask into %rdx, correct the found wrong value in %cr4 (to avoid triggering another BUG). The value left in %rdx should be sufficient for deducing cr4_pv32_mask from the register dump. Also there is one more place for XEN_CR4_PV32_BITS to be used. Signed-off-by: Jan Beulich x86: refine debugging of SMEP/SMAP fix Instead of just latching cr4_pv32_mask into %rdx, correct the found wrong value in %cr4 (to avoid triggering another BUG). The value left in %rdx should be sufficient for deducing cr4_pv32_mask from the register dump. Also there is one more place for XEN_CR4_PV32_BITS to be used. Signed-off-by: Jan Beulich --- a/xen/arch/x86/x86_64/compat/entry.S +++ b/xen/arch/x86/x86_64/compat/entry.S @@ -182,7 +182,7 @@ ENTRY(compat_restore_all_guest) testb $3,UREGS_cs(%rsp) jpe .Lcr4_alt_end mov CPUINFO_cr4-CPUINFO_guest_cpu_user_regs(%rsp), %rax - and $~(X86_CR4_SMEP|X86_CR4_SMAP), %rax + and $~XEN_CR4_PV32_BITS, %rax mov %rax, CPUINFO_cr4-CPUINFO_guest_cpu_user_regs(%rsp) mov %rax, %cr4 .Lcr4_alt_end: @@ -218,8 +218,10 @@ ENTRY(cr4_pv32_restore) and cr4_pv32_mask(%rip), %rax cmp cr4_pv32_mask(%rip), %rax je 1f - /* Cause cr4_pv32_mask to be visible in the BUG register dump. */ - mov cr4_pv32_mask(%rip), %rdx + /* Avoid coming back here while handling the #UD we cause below. */ + mov %cr4, %rdx + or cr4_pv32_mask(%rip), %rdx + mov %rdx, %cr4 BUG 1: #endif --- a/xen/arch/x86/x86_64/compat/entry.S +++ b/xen/arch/x86/x86_64/compat/entry.S @@ -182,7 +182,7 @@ ENTRY(compat_restore_all_guest) testb $3,UREGS_cs(%rsp) jpe .Lcr4_alt_end mov CPUINFO_cr4-CPUINFO_guest_cpu_user_regs(%rsp), %rax - and $~(X86_CR4_SMEP|X86_CR4_SMAP), %rax + and $~XEN_CR4_PV32_BITS, %rax mov %rax, CPUINFO_cr4-CPUINFO_guest_cpu_user_regs(%rsp) mov %rax, %cr4 .Lcr4_alt_end: @@ -218,8 +218,10 @@ ENTRY(cr4_pv32_restore) and cr4_pv32_mask(%rip), %rax cmp cr4_pv32_mask(%rip), %rax je 1f - /* Cause cr4_pv32_mask to be visible in the BUG register dump. */ - mov cr4_pv32_mask(%rip), %rdx + /* Avoid coming back here while handling the #UD we cause below. */ + mov %cr4, %rdx + or cr4_pv32_mask(%rip), %rdx + mov %rdx, %cr4 BUG 1: #endif