Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3286623imm; Fri, 20 Jul 2018 13:40:25 -0700 (PDT) X-Google-Smtp-Source: AAOMgpc5ffo9/Eo6YPpokgEi62e2CDlkP0Z+FIdLgv7TKXPUH45Z2CEvHrxIT59vZlxtofxNu7+5 X-Received: by 2002:a17:902:e093:: with SMTP id cb19-v6mr3457679plb.189.1532119225788; Fri, 20 Jul 2018 13:40:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532119225; cv=none; d=google.com; s=arc-20160816; b=gR1fOMbQBZnljwJt/u+WgC0AXmmwMlD9MokoNZcu7CeQLWd5Aco+rADjWnGd082cWp D4/x/LOEeequkxvj9ZKYf2nHdzibuOKR6nx6cWLAGfTLZM7Jdh4PWrx4B+SK6DukXslA b+kcq0xpf8Ddhb0TIg7seAq3JFMTu6+HHuPja1OYmdSfFqhkd9VkW61o9W4hx/XgHTTh DsDC1LHLB6kSm/p1R0VONweZqptW9/cyYkvOnOQzpq+UyjEGtvQlMtCn5ZRqXyLXlU6E Rqt/zlEMXuSpgMUkREEhaCDwxDFbLrZ74U5aT5mA0SHfE6C/Fgaym1nlfJ3v76O7TAXk z0UA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition :content-transfer-encoding:mime-version:robot-unsubscribe:robot-id :git-commit-id:subject:to:references:in-reply-to:reply-to:cc :message-id:from:date:arc-authentication-results; bh=vULCuFakAw0ZEmtEN85tFXRf+eG4iG6c7wQolTdUhZE=; b=Z/1fkH7Ys7XLO8Z7YUI6B0CLHtQYKnFQFKoOUh2w8eamaYHgTkSF3uQ5oufQGBsWvX aWXJN9KwIgFbhnqyA+Y4Hyj53PcdRKoaTLwfMRiiC8dUf6A+hNNnWDAGYQApxuYFDEM1 z3p7RAdYLQczmeZ/YdqhBSMoBt3xqsr4Vb5qqKEFyca4y/9C7bX5lH0nNqsa/w+Xpeco Eh+B2gt2GVPku2iOJutFNMYG7h2k/JcNtKCz6ZAFYrkie+w2X8V2egH/V5RbnORGevep gEuOA3kgr9dACABgxYEHjc/gTdMuCU+RS8+9mn4+iEqeC3TMBoIpgOqfCVfYst+t25u9 +UrQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t66-v6si2534175pfg.292.2018.07.20.13.40.11; Fri, 20 Jul 2018 13:40:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728834AbeGTV2Y (ORCPT + 99 others); Fri, 20 Jul 2018 17:28:24 -0400 Received: from terminus.zytor.com ([198.137.202.136]:43107 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727984AbeGTV2Y (ORCPT ); Fri, 20 Jul 2018 17:28:24 -0400 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id w6KKbRIj2785011 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 20 Jul 2018 13:37:27 -0700 Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id w6KKbRpK2785008; Fri, 20 Jul 2018 13:37:27 -0700 Date: Fri, 20 Jul 2018 13:37:27 -0700 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Joerg Roedel Message-ID: Cc: tglx@linutronix.de, jpoimboe@redhat.com, David.Laight@aculab.com, dvlasenk@redhat.com, alexander.shishkin@linux.intel.com, acme@kernel.org, jolsa@redhat.com, linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org, jgross@suse.com, mingo@kernel.org, brgerst@gmail.com, bp@alien8.de, dave.hansen@intel.com, dhgutteridge@sympatico.ca, luto@kernel.org, hpa@zytor.com, jroedel@suse.de, peterz@infradead.org, pavel@ucw.cz, llong@redhat.com, jkosina@suse.cz, eduval@amazon.com, aarcange@redhat.com, will.deacon@arm.com, namhyung@kernel.org, torvalds@linux-foundation.org, boris.ostrovsky@oracle.com Reply-To: mingo@kernel.org, jolsa@redhat.com, linux-kernel@vger.kernel.org, jgross@suse.com, gregkh@linuxfoundation.org, alexander.shishkin@linux.intel.com, dvlasenk@redhat.com, acme@kernel.org, tglx@linutronix.de, David.Laight@aculab.com, jpoimboe@redhat.com, namhyung@kernel.org, will.deacon@arm.com, boris.ostrovsky@oracle.com, torvalds@linux-foundation.org, pavel@ucw.cz, peterz@infradead.org, eduval@amazon.com, aarcange@redhat.com, jkosina@suse.cz, llong@redhat.com, jroedel@suse.de, bp@alien8.de, brgerst@gmail.com, luto@kernel.org, hpa@zytor.com, dhgutteridge@sympatico.ca, dave.hansen@intel.com In-Reply-To: <1532103744-31902-3-git-send-email-joro@8bytes.org> References: <1532103744-31902-3-git-send-email-joro@8bytes.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/pti] x86/entry/32: Check for VM86 mode in slow-path check Git-Commit-ID: d5e84c21dbf5ea458897f88346dc979909eed913 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, T_DATE_IN_FUTURE_96_Q autolearn=ham autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on terminus.zytor.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: d5e84c21dbf5ea458897f88346dc979909eed913 Gitweb: https://git.kernel.org/tip/d5e84c21dbf5ea458897f88346dc979909eed913 Author: Joerg Roedel AuthorDate: Fri, 20 Jul 2018 18:22:23 +0200 Committer: Thomas Gleixner CommitDate: Fri, 20 Jul 2018 22:33:41 +0200 x86/entry/32: Check for VM86 mode in slow-path check The SWITCH_TO_KERNEL_STACK macro only checks for CPL == 0 to go down the slow and paranoid entry path. The problem is that this check also returns true when coming from VM86 mode. This is not a problem by itself, as the paranoid path handles VM86 stack-frames just fine, but it is not necessary as the normal code path handles VM86 mode as well (and faster). Extend the check to include VM86 mode. This also makes an optimization of the paranoid path possible. Signed-off-by: Joerg Roedel Signed-off-by: Thomas Gleixner Cc: "H . Peter Anvin" Cc: linux-mm@kvack.org Cc: Linus Torvalds Cc: Andy Lutomirski Cc: Dave Hansen Cc: Josh Poimboeuf Cc: Juergen Gross Cc: Peter Zijlstra Cc: Borislav Petkov Cc: Jiri Kosina Cc: Boris Ostrovsky Cc: Brian Gerst Cc: David Laight Cc: Denys Vlasenko Cc: Eduardo Valentin Cc: Greg KH Cc: Will Deacon Cc: aliguori@amazon.com Cc: daniel.gruss@iaik.tugraz.at Cc: hughd@google.com Cc: keescook@google.com Cc: Andrea Arcangeli Cc: Waiman Long Cc: Pavel Machek Cc: "David H . Gutteridge" Cc: Arnaldo Carvalho de Melo Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Namhyung Kim Cc: joro@8bytes.org Link: https://lkml.kernel.org/r/1532103744-31902-3-git-send-email-joro@8bytes.org --- arch/x86/entry/entry_32.S | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S index 010cdb41e3c7..2767c625a52c 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S @@ -414,8 +414,16 @@ andl $(0x0000ffff), PT_CS(%esp) /* Special case - entry from kernel mode via entry stack */ - testl $SEGMENT_RPL_MASK, PT_CS(%esp) - jz .Lentry_from_kernel_\@ +#ifdef CONFIG_VM86 + movl PT_EFLAGS(%esp), %ecx # mix EFLAGS and CS + movb PT_CS(%esp), %cl + andl $(X86_EFLAGS_VM | SEGMENT_RPL_MASK), %ecx +#else + movl PT_CS(%esp), %ecx + andl $SEGMENT_RPL_MASK, %ecx +#endif + cmpl $USER_RPL, %ecx + jb .Lentry_from_kernel_\@ /* Bytes to copy */ movl $PTREGS_SIZE, %ecx