Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5138130imu; Tue, 8 Jan 2019 12:12:07 -0800 (PST) X-Google-Smtp-Source: ALg8bN5XZ3fv088d2FU6OE/lwz1uoexAYb5+aejKYRL3OfWHeMFUSTItBCOqEdtq9rOx7EhbYBFd X-Received: by 2002:a63:a553:: with SMTP id r19mr2752286pgu.53.1546978327033; Tue, 08 Jan 2019 12:12:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546978327; cv=none; d=google.com; s=arc-20160816; b=weB4KphtT2yEfQYTEC1IEB34RehJIxdcbdbK0ZYFxdZ+XcT8+J8xRD59MIkyUMrE5v 4r8rfZX8ELcBs3T4bhwRrRtuzmqv71okRJBMaGf8GNEwNCvDIC/vGCijkEMkp6JV0NyB cF/EEEUo5arx7s3xkZJ58cp1O2AmrCvAd109T7wsnLq9wdkzPGxOG9Cg5zN14ETYMRJ9 rktYo9cHbl1d8Odnez+k5ukEUOV/QnyiphLpGjrVCl0AUDyTuYzsvAodkYZQ3Jq0UCsn Jae7/AJakjndvW81QwDOh2PqSgo8mRPkfIId+3pMHULmelbSSZckMgxLbMD40NXqOnl4 woWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=igACWmwrnhdLPKLAhyPwZIsvNiBy7wNcMk7ReQbENP8=; b=eGxFkfNyt72FlFYFNRbWvdkslYm2XpCwRArIcvJv2s6Olde9MgfRY0kUsR23QrXaSQ urEPwkm+WV7iERBGBTE4J4KwNKw/F24WtVRH09Q4abl8TcVHgjyYFdrPcPZ9qXEuUsMW gR0E9dRmX1aE7mSgQJnUEytYPEUuy31qO29VSHsbotERke4MxItM+cg2Eo+3xz0grXv1 +RFiuhinTPiPy10fvEcoqyhZQoJlHhYFEucF7o3i0ag+hTnVw4sWqyB7/FoeqHAeAxQQ y2XEW/TuOCDclzAYcefvSyZzkty418TFNz5IHG7ANqSPeeSrjLPbpobaO2ktfaplQLub wkKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=HlVgeJD1; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g7si25381326plq.336.2019.01.08.12.11.43; Tue, 08 Jan 2019 12:12:06 -0800 (PST) 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=pass header.i=@kernel.org header.s=default header.b=HlVgeJD1; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730039AbfAHUJB (ORCPT + 99 others); Tue, 8 Jan 2019 15:09:01 -0500 Received: from mail.kernel.org ([198.145.29.99]:33320 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729429AbfAHT1S (ORCPT ); Tue, 8 Jan 2019 14:27:18 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B33F020827; Tue, 8 Jan 2019 19:27:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1546975638; bh=Sezvcsn5OJPc9yuyhSUxm5paiQLANTXNIs/lAvXm3iU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HlVgeJD109iXlQCjY0yUSwz59FjZG7IgmL/uIp+0jG6v/qnQ62q3s+nVlqiOsFSy5 ZRI+6oKpAK0x/M/Fc+U+VZ5F59gZARhYm8tEgZ6DBqI8ffgEZbiv87jXUrTRtxoB98 JlCwAPEZJKOgivAlvYuS9Va3gz0LWcr5rjcEZAXI= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Andy Lutomirski , Borislav Petkov , Dave Hansen , "H . Peter Anvin" , Linus Torvalds , Peter Zijlstra , Rik van Riel , Thomas Gleixner , Yu-cheng Yu , Ingo Molnar , Sasha Levin Subject: [PATCH AUTOSEL 4.20 024/117] x86/fault: Don't try to recover from an implicit supervisor access Date: Tue, 8 Jan 2019 14:24:52 -0500 Message-Id: <20190108192628.121270-24-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190108192628.121270-1-sashal@kernel.org> References: <20190108192628.121270-1-sashal@kernel.org> MIME-Version: 1.0 X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andy Lutomirski [ Upstream commit ebb53e2597e2dc7637ab213df006e99681b6ee25 ] This avoids a situation in which we attempt to apply various fixups that are not intended to handle implicit supervisor accesses from user mode if we screw up in a way that causes this type of fault. Signed-off-by: Andy Lutomirski Cc: Borislav Petkov Cc: Dave Hansen Cc: H. Peter Anvin Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Rik van Riel Cc: Thomas Gleixner Cc: Yu-cheng Yu Link: http://lkml.kernel.org/r/9999f151d72ff352265f3274c5ab3a4105090f49.1542841400.git.luto@kernel.org Signed-off-by: Ingo Molnar Signed-off-by: Sasha Levin --- arch/x86/mm/fault.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 71d4b9d4d43f..26388576a599 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -639,6 +639,15 @@ no_context(struct pt_regs *regs, unsigned long error_code, unsigned long flags; int sig; + if (user_mode(regs)) { + /* + * This is an implicit supervisor-mode access from user + * mode. Bypass all the kernel-mode recovery code and just + * OOPS. + */ + goto oops; + } + /* Are we prepared to handle this kernel fault? */ if (fixup_exception(regs, X86_TRAP_PF, error_code, address)) { /* @@ -726,6 +735,7 @@ no_context(struct pt_regs *regs, unsigned long error_code, if (IS_ENABLED(CONFIG_EFI)) efi_recover_from_page_fault(address); +oops: /* * Oops. The kernel tried to access some bad page. We'll have to * terminate things with extreme prejudice: -- 2.19.1