Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp2565pxb; Mon, 31 Jan 2022 03:48:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJwWNisYxL7n1jKqKD6I7Yuj7CxrPOwgYoMDNOr8mFa5lkILpZCQwEiM9Yy6KOoYz+dBoKQd X-Received: by 2002:a63:9:: with SMTP id 9mr16192177pga.101.1643629738635; Mon, 31 Jan 2022 03:48:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643629738; cv=none; d=google.com; s=arc-20160816; b=zHZw61S1WD/y2KGGFfqdCD+ofUJy0Uexm8I3yVXM4BAwsoIu0DBQwRYlQWnNTP78gE TgU5wMeBiztPShqPhEsP1F63te2FDgfBtLN8YJvoJE0RTkrfCt407dHJesQdhbdlyvX2 JFyl72lyXgCojsEgzA9kTil1o9nR+Ql5I/bJfJ2WeHNKav0b1ENJtydygVbI4Iy4KxEk q9Po0KOD5lht9oL/QOfF6qPvvjwsFFP/+a7J85E4/ib3lL9zwaq5Q9J/m9XvVe3ysrhn NSihVvqJ16U4aO89iTLjpwUnq/D3Dg1M86qgS7hv+UmUaogTWQZR3mgS3GhtDXZpx99r l1YA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:subject :from:references:cc:to:content-language:user-agent:mime-version:date :message-id:dkim-signature; bh=OUZASjF7eZ5yzOohhNp7eEy1p38hP+pQsNPrejlY0MU=; b=DpWk6URqSQ5bqMag48ktuHaA3arp2sGDmPTeagh2CEBbwQojdud3rBnkr/8G6nWF0x hVgIfRJFf5766nJ0kMUdGbRM1bcNQPrmLTenjxwDxH8ClxXyHR+UMxCQJa37ysz40fQQ BwTb7gIqxa71tDBzorEAC/KOzBvidjBc+cPk5GdQY9jJr7hDOMsErKx+iFdAJ/m5MCdh jhFZ1XZNFM5BRv8WqCCRWgczZdXzV37cLeGH+rzbhEdjAkpZIcI+RcCvxrY5INeaC2BP swUcZRta1nUNyYO2RtuFzUjdwFG76n/MJFKJBFJ+1hemuf8lQLqL8ejr3sVUmllz9gxI rfQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=MhHhKNOH; 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k22si13762538pfc.49.2022.01.31.03.48.47; Mon, 31 Jan 2022 03:48:58 -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=@intel.com header.s=Intel header.b=MhHhKNOH; 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351532AbiA1XKf (ORCPT + 99 others); Fri, 28 Jan 2022 18:10:35 -0500 Received: from mga03.intel.com ([134.134.136.65]:9057 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351797AbiA1XK1 (ORCPT ); Fri, 28 Jan 2022 18:10:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643411427; x=1674947427; h=message-id:date:mime-version:to:cc:references:from: subject:in-reply-to:content-transfer-encoding; bh=XpKab4uNQUdpvhLF1knf4E4kUDvkXGcbGb7oNXJ1OBk=; b=MhHhKNOHAi9WcPG5dw9sI48GtIK+M6T+kIQEWi2HuTYxpLxNbfnRfSHd EkbDYkM7krjdLsRFPkWy/NP5Rv8oQveiieDPPCZ+rdoB9ZEOHsVAM21sd oBm3aMeqBlON5qUaLGmoZTl2Eidoyfbtl2eic71CsZ2DylKFCPWT3l2NE TjWm1+PsIGMFl/zpPIg8gYRtsq+pWCuHtiaVBeumnodq3XLcb63Vp3w1P OOKY+zfq2LRwDra4FRDlgiQvMSHIBGrJ02YPkcuLfWqwvYb9wmYfAL/+J 8q807BDeWi3UvlwM6HYKhShpUO6i6nF5U1L0xhDFVAZQH09Uqn2JYoNir A==; X-IronPort-AV: E=McAfee;i="6200,9189,10241"; a="247162500" X-IronPort-AV: E=Sophos;i="5.88,325,1635231600"; d="scan'208";a="247162500" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jan 2022 15:10:25 -0800 X-IronPort-AV: E=Sophos;i="5.88,325,1635231600"; d="scan'208";a="697245965" Received: from zhenkuny-mobl2.amr.corp.intel.com (HELO [10.209.84.59]) ([10.209.84.59]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jan 2022 15:10:25 -0800 Message-ID: <01a47dd8-4717-7b07-39ad-45fee1f78311@intel.com> Date: Fri, 28 Jan 2022 15:10:24 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.2 Content-Language: en-US To: ira.weiny@intel.com, Dave Hansen , "H. Peter Anvin" , Dan Williams Cc: Fenghua Yu , Rick Edgecombe , linux-kernel@vger.kernel.org References: <20220127175505.851391-1-ira.weiny@intel.com> <20220127175505.851391-9-ira.weiny@intel.com> From: Dave Hansen Subject: Re: [PATCH V8 08/44] x86/fault: Adjust WARN_ON for PKey fault In-Reply-To: <20220127175505.851391-9-ira.weiny@intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 1/27/22 09:54, ira.weiny@intel.com wrote: > From: Ira Weiny > > Previously if a Protection key fault occurred it indicated something > very wrong because user page mappings are not supposed to be in the > kernel address space. This is missing a key point. The problem is PK faults on "*kernel* addresses. > Now PKey faults may happen on kernel mappings if the feature is enabled. One nit: I've been using "pkeys" and "pkey" as the terms. I usually don't capitalize them except at the beginning of a sentence. > If PKS is enabled, avoid the warning in the fault path. > > Cc: Sean Christopherson > Cc: Dan Williams > Signed-off-by: Ira Weiny > --- > arch/x86/mm/fault.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c > index d0074c6ed31a..6ed91b632eac 100644 > --- a/arch/x86/mm/fault.c > +++ b/arch/x86/mm/fault.c > @@ -1148,11 +1148,15 @@ do_kern_addr_fault(struct pt_regs *regs, unsigned long hw_error_code, > unsigned long address) > { > /* > - * Protection keys exceptions only happen on user pages. We > - * have no user pages in the kernel portion of the address > - * space, so do not expect them here. > + * X86_PF_PK (Protection key exceptions) may occur on kernel addresses > + * when PKS (PKeys Supervisor) is enabled. > + * > + * However, if PKS is not enabled WARN if this exception is seen > + * because there are no user pages in the kernel portion of the address > + * space. > */ > - WARN_ON_ONCE(hw_error_code & X86_PF_PK); > + WARN_ON_ONCE(!cpu_feature_enabled(X86_FEATURE_PKS) && > + (hw_error_code & X86_PF_PK)); > > #ifdef CONFIG_X86_32 > /* I'm wondering if this warning is even doing us any good. I'm pretty sure it's never triggered on me at least. Either way, let's not get too carried away with the comment. I think this should do: /* * PF_PF faults should only occur on kernel * addresses when supervisor pkeys are enabled. */