Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp5875396pxu; Wed, 23 Dec 2020 07:35:39 -0800 (PST) X-Google-Smtp-Source: ABdhPJxibbcW8xV/LlZ4AUPQqEcP+zSjwWpHQjtnZCvuNognQQlhtne/ZoifdWCNU3iFGX2tlTLA X-Received: by 2002:a17:906:4544:: with SMTP id s4mr24257646ejq.366.1608737739631; Wed, 23 Dec 2020 07:35:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608737739; cv=none; d=google.com; s=arc-20160816; b=m6beUmtbBt5umD0M5tDnb89ARnARQXhRaGyKOUsdo1/2+iA6rLnJ9Qrh6jhY1A70VP v9AqvgUssR+HWGpQyMQzfumQdg0YfdYflYk19oI3yr7V777a+KeDK2cW+yk+RtLihpXX +Nhe+TTft9evBrD+L1Wk+8OFGrZ2lmWwY/q6ycXxakIGkRZJdDppnoGnVs91y9CPttF0 8GZp5kqXfTbbpcK27AxVjxD6KhdYMDIj2fEI9AVgq4uVSeyX8lCk/3BpFaf/sQ7TRs0f mDvXr8QYMwXkLwdn8j6yGpARZYCjwdhZQE/6KW+arRLhqL0Vfbzqv/safIjf39JRCGq1 lbJg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ypuR0EAvZ4e2WVBjQs/9e43LQJPLqWQVZ81bMQWxiuY=; b=Y8uVVqK/pu/6HQtDj2dW71tW7WIJwfItRkIeodshRzcjz9IrEtlZuMt1EAsUy45Xkg qWpKDZP0hvfQ5XbXVdA94pp3+OQ4MOS2tRbtAUhZzsPwAzdhCA+yQPoFfkehWTXSwwaE xlcxEVOCZHYAsowrMbx5j88AW6QNzbT1xGRgHOOkToFqAj4gQ7hqcVxw492rIQdPv8Hk Dpjo53dRy3/t+L18rpLJ1OP/oZ38VDXlV6ZkH51xfIEMETPc3XtlPMh2XH1QtiS5MM3w jXayiIbwAmlAQoiOgASzCnFryEadxS9alK8UvF7fsAEePt2J7LVfF9xEtnhNk0SGd5lr 48Jg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="Lu/ykf32"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c25si14961612edx.588.2020.12.23.07.35.16; Wed, 23 Dec 2020 07:35:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="Lu/ykf32"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728075AbgLWPd0 (ORCPT + 99 others); Wed, 23 Dec 2020 10:33:26 -0500 Received: from mail.kernel.org ([198.145.29.99]:43898 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726558AbgLWPdZ (ORCPT ); Wed, 23 Dec 2020 10:33:25 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id A637F23343; Wed, 23 Dec 2020 15:32:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1608737565; bh=IEtk3MrL4cfF0oLmIg4TjHu6d/ubqCEYorrr+CJEuLU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Lu/ykf32vfPcqMlvOM7ZDNsO7OAC8M1D9b7demgjmNQLZEjYtjzXUG3B/Psss1ufm sRqf6INF+7wCkKEek+MV6+ukLvjc+HLHC0Dhfg+i8vUWa5LyKMytkvqYDfN9XZw5d3 JRg2+gSb/UzXxMo8Gjbxs8Cni/VbZmPN1+bdH+Es= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Andi Kleen , Peter Zijlstra , Fenghua Yu , Tony Luck , Thomas Gleixner , Linus Torvalds Subject: [PATCH 5.10 02/40] x86/split-lock: Avoid returning with interrupts enabled Date: Wed, 23 Dec 2020 16:33:03 +0100 Message-Id: <20201223150515.682569814@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201223150515.553836647@linuxfoundation.org> References: <20201223150515.553836647@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andi Kleen commit e14fd4ba8fb47fcf5f244366ec01ae94490cd86a upstream. When a split lock is detected always make sure to disable interrupts before returning from the trap handler. The kernel exit code assumes that all exits run with interrupts disabled, otherwise the SWAPGS sequence can race against interrupts and cause recursing page faults and later panics. The problem will only happen on CPUs with split lock disable functionality, so Icelake Server, Tiger Lake, Snow Ridge, Jacobsville. Fixes: ca4c6a9858c2 ("x86/traps: Make interrupt enable/disable symmetric in C code") Fixes: bce9b042ec73 ("x86/traps: Disable interrupts in exc_aligment_check()") # v5.8+ Signed-off-by: Andi Kleen Cc: Peter Zijlstra Cc: Fenghua Yu Cc: Tony Luck Reviewed-by: Thomas Gleixner Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- arch/x86/kernel/traps.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -299,11 +299,12 @@ DEFINE_IDTENTRY_ERRORCODE(exc_alignment_ local_irq_enable(); if (handle_user_split_lock(regs, error_code)) - return; + goto out; do_trap(X86_TRAP_AC, SIGBUS, "alignment check", regs, error_code, BUS_ADRALN, NULL); +out: local_irq_disable(); }