Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3058999imm; Fri, 20 Jul 2018 09:24:39 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfqiOKR3D2ptCo4O10jVFuws9Zm5m7D44nYtODebbq79N7UFVt/HRjM8imUy9xkL8DCuL4o X-Received: by 2002:a62:d1b:: with SMTP id v27-v6mr2879183pfi.87.1532103879221; Fri, 20 Jul 2018 09:24:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532103879; cv=none; d=google.com; s=arc-20160816; b=tlSvPxmL4KYu+LI4Ub4mbMXVam8Ti6zl7pekZq2YfPZ+Bght17cQsZvVcVx8R4IwKt DsgkOp5CaDuVW29r93DOdslZ7PCeLYK6cubZH+Pkbx39VI5LJkExUUnQSFZNSpGC23q0 2+owGqgtrziDpMXchN5y0L9XjtMj227pniQD9P6h3QXh9o5/0Ox/u1uuL9wFCgBsjlXk 7l+zME6IY+RNcGj9EPxTl0sdRK+ATpjPBl61PK3KTu8B4bJiL0AFWe98GmghxyB14rpQ 5U77xXft0A+ZnE2bbDqoE+aD6f+ZHuYXQXqNCoKPjt/HklRKCOk4cTs3MsH6avMQwL7r Tk3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=ggIGRB+Y/gtXbLlucNcTDkCpcGgc8/+mBFxNZLf1Dn8=; b=txoJcgU/JRrUFA2kFacsYHJvqUwt1+nP/zHOT9/SC2P6UXvCuwpCu0rMxI385mNTwB guChoKTH89pMAU1ENLIUhVbquSWy4vpytxJDrHQumQRoXafYFLxG3oDQ4uwP4+LS24Pg g2VqK3UxUofXkMHPB4sMW+ZjLtjM/VDEfLB9bNPtC0pFPoMZeg48oksjjRGOrAjqSB+k QveyLz/PZ8rcd/rtReVuSA8EHr5YtH6fPURzrIjX+AI/CK40ExC9td8wTDQDhrPJ0OIa ErMUlaToZIs8hgimE4ZDNmVmU3m+cdU5HLf9CGJgukiLrmhQnlHsfXMaJxESo9s7ndzY KLxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail (test mode) header.i=@8bytes.org header.s=mail-1 header.b=jBrZd1xf; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=8bytes.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b135-v6si2149900pga.51.2018.07.20.09.24.24; Fri, 20 Jul 2018 09:24:39 -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; dkim=fail (test mode) header.i=@8bytes.org header.s=mail-1 header.b=jBrZd1xf; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=8bytes.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388032AbeGTRLw (ORCPT + 99 others); Fri, 20 Jul 2018 13:11:52 -0400 Received: from 8bytes.org ([81.169.241.247]:35822 "EHLO theia.8bytes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387901AbeGTRLl (ORCPT ); Fri, 20 Jul 2018 13:11:41 -0400 Received: by theia.8bytes.org (Postfix, from userid 1000) id 5EC2147B; Fri, 20 Jul 2018 18:22:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=8bytes.org; s=mail-1; t=1532103759; bh=4KTDetwc2za08ZBDrrEdYFeqtUqIJZdCy2mgZWB4/5E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jBrZd1xflyjidAw0e7BS6prO+8qCnAtDYqk2xh5lrukP/n5XrVELBoV3MGwc6TKVk JDG1nN7MSAsrAN3lX7Zg9tgj8AY9OxBPb5Qc5xpJbDtKaUbc0Gh+WXJCz6UvGQmvu/ V97lm5OZkmzTLBy5OZvUeDzayAD+LUGIk1YAusZIuurPukGRSPxEL7bDzcgBX5hDnG SK3ohiJ322ZzQkm2RA8dwJ8d6jSr/1a8KZfmTChTXa6Bxf94iSWHUPkb3ICsLAWm9Q 5XLq0dnCv/dHpTKZMWWxO5+ldjsSBOjmAa2jR+/S4IcodVU8Y2gk2gTELjnLumHEH9 tplzyeIw6H91Q== From: Joerg Roedel To: Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" Cc: x86@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Linus Torvalds , Andy Lutomirski , Dave Hansen , Josh Poimboeuf , Juergen Gross , Peter Zijlstra , Borislav Petkov , Jiri Kosina , Boris Ostrovsky , Brian Gerst , David Laight , Denys Vlasenko , Eduardo Valentin , Greg KH , Will Deacon , aliguori@amazon.com, daniel.gruss@iaik.tugraz.at, hughd@google.com, keescook@google.com, Andrea Arcangeli , Waiman Long , Pavel Machek , "David H . Gutteridge" , jroedel@suse.de, Arnaldo Carvalho de Melo , Alexander Shishkin , Jiri Olsa , Namhyung Kim , joro@8bytes.org Subject: [PATCH 2/3] x86/entry/32: Check for VM86 mode in slow-path check Date: Fri, 20 Jul 2018 18:22:23 +0200 Message-Id: <1532103744-31902-3-git-send-email-joro@8bytes.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1532103744-31902-1-git-send-email-joro@8bytes.org> References: <1532103744-31902-1-git-send-email-joro@8bytes.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joerg Roedel 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 --- 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 010cdb4..2767c62 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 -- 2.7.4