From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06A5AC7EE30 for ; Wed, 2 Jul 2025 10:10:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 806046B00A7; Wed, 2 Jul 2025 06:10:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7B6286B00BE; Wed, 2 Jul 2025 06:10:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 67E206B00D5; Wed, 2 Jul 2025 06:10:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 5267D6B00A7 for ; Wed, 2 Jul 2025 06:10:36 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id D8F3180118 for ; Wed, 2 Jul 2025 10:10:35 +0000 (UTC) X-FDA: 83618905230.12.9A7786B Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by imf06.hostedemail.com (Postfix) with ESMTP id 959F1180007 for ; Wed, 2 Jul 2025 10:10:33 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=j+8zee73; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf06.hostedemail.com: domain of kirill.shutemov@linux.intel.com has no SPF policy when checking 192.198.163.16) smtp.mailfrom=kirill.shutemov@linux.intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751451033; a=rsa-sha256; cv=none; b=8TvKhc8LiI6t9buKc+fNocFk4FgUdNpF2S1xlj6GFw1NQ9b+9yUoZnR8jgaJ4Ufjl4tO+c APxlIA5q87mFdxIzipVifWNqBDMCCZSDLFYyz2YTDPCBYIhSYHhhVqgE+3m/x2GlsLwJjK 8ht+WlUSj32KInffhdeO+VhrO8xXiPM= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=j+8zee73; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf06.hostedemail.com: domain of kirill.shutemov@linux.intel.com has no SPF policy when checking 192.198.163.16) smtp.mailfrom=kirill.shutemov@linux.intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751451033; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cHBgPjkPCa3S/yOhLbRaBbwtn+tq8KW8f6QbTdHhSM8=; b=f2Is/D3eaZ0U82ZzdgQa0+LSYNavJEtg+nlWUBnia3cECBz8oRATgZDDJT6riSAAWAB3Xg QwfPC49i6cILV84wOkLQuPoQgxFGwDjSY+4xG4imCiCc/v4N8BofshL7zVFAHf9LaFirQ1 61n2VDiP6g2Tk1UTT7vjtYOH7nIIwkU= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1751451034; x=1782987034; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=wrSfWUeY1vWA1wmBzqUEGdZJDwhOB8JDwHQ2AQuAgYI=; b=j+8zee73F8BrzZq98d6p4kwKafIEMuKKnVd1CURrujVcvN+/kHodSJE8 oaBMMpGf8KDNJBeQKfjmzUvx0+ywkglNcHD7Jc8bhvMZW6W+OCou3JI5f eEEywEHMF3XbU5C3ra5zgrCJtTZTlirfxCkWN0hae5eoC1h9klITVjnR7 B5rJLFL7v/CH6yxr0W+8HheY93+A7hYwn0NGu+j+LEA+Y0BmTWIwMhVpw fOaX/ue9OePxR9FAiOtW0WFw0FOxiGz21NUf+eaPR7PHBYSl0O68Ps/dz 2RMRsFP+enZ8OtWgNTf2QYE8bma56q7a8+KrfAPJi+pngFhxU9jHsrisq w==; X-CSE-ConnectionGUID: rNKkHlNlTxOcKzds1r8n2w== X-CSE-MsgGUID: +OH1YXctRhWbr0Q97UYXJQ== X-IronPort-AV: E=McAfee;i="6800,10657,11481"; a="41368736" X-IronPort-AV: E=Sophos;i="6.16,281,1744095600"; d="scan'208";a="41368736" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jul 2025 03:10:32 -0700 X-CSE-ConnectionGUID: EoGc5nQdTs+SBUaD4Dt9UQ== X-CSE-MsgGUID: Jt303iQRT22d+XS99ocr+g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,281,1744095600"; d="scan'208";a="153490384" Received: from black.fi.intel.com ([10.237.72.28]) by orviesa006.jf.intel.com with ESMTP; 02 Jul 2025 03:10:20 -0700 Received: by black.fi.intel.com (Postfix, from userid 1000) id BEA181E0; Wed, 02 Jul 2025 13:10:18 +0300 (EEST) Date: Wed, 2 Jul 2025 13:10:18 +0300 From: "Kirill A. Shutemov" To: Sohil Mehta Cc: Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Peter Zijlstra , Ard Biesheuvel , "Paul E. McKenney" , Josh Poimboeuf , Xiongwei Song , Xin Li , "Mike Rapoport (IBM)" , Brijesh Singh , Michael Roth , Tony Luck , Alexey Kardashevskiy , Alexander Shishkin , Jonathan Corbet , Ingo Molnar , Pawan Gupta , Daniel Sneddon , Kai Huang , Sandipan Das , Breno Leitao , Rick Edgecombe , Alexei Starovoitov , Hou Tao , Juergen Gross , Vegard Nossum , Kees Cook , Eric Biggers , Jason Gunthorpe , "Masami Hiramatsu (Google)" , Andrew Morton , Luis Chamberlain , Yuntao Wang , Rasmus Villemoes , Christophe Leroy , Tejun Heo , Changbin Du , Huang Shijie , Geert Uytterhoeven , Namhyung Kim , Arnaldo Carvalho de Melo , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCHv8 12/17] x86/traps: Communicate a LASS violation in #GP message Message-ID: References: <20250701095849.2360685-1-kirill.shutemov@linux.intel.com> <20250701095849.2360685-13-kirill.shutemov@linux.intel.com> <63a44def-fd5d-4f21-8d09-bb608cfab524@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <63a44def-fd5d-4f21-8d09-bb608cfab524@intel.com> X-Stat-Signature: f9tgdtiofrq1snjiafwpph8t4qrbjt5k X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 959F1180007 X-Rspam-User: X-HE-Tag: 1751451033-951449 X-HE-Meta: U2FsdGVkX18I9FfNeXIEdRnLylwQ8PQQCbZwEYG5oR+paR17BJHKUTQUErng2eegNLCfjKwZW6G5avPgAi9SxskrJdCz4H/WNC7ceJrUpa4wpGUKkuLruSlntpj1ILyElj8RlzATUDpWoapdxp84s2P59T8TeQ8WcyorZqLU59rJMksqaj+UHybd4Dlnzbj5JsHv4W4xEeGvR7JH1fMkntJhJcbyfru6SjpJaUsV2Tx9tbmphr743Yh0fOpnB3vxjEhfVE2gKj2eLR/3GZK6vd+5nghW8bZz2ZBpjtiILI3F3P9SEHY4ZNJe4/jGJ9RYo7A+/zxgbatOZxSfSybu1Q9w83NZPChAW1egvo7QuatC/16NWDPgniSR7fn+d9BpC04uN+G099vzOWT/6Sn3/rGqn68R9WLx6LwBbObLnHsENDFkQ+od/W62Tps+kLVtdMk4s18nS6uMlb2+vGUmHvlCplzUTtBS4arLJTDzwFUR9Zu2HXR8S/VlltVeJPEmONZutL7zv59MnpXHsWVuHEF+pv0SEWABQ5ZQLfXNgmJhbHEdTDvu9q/4srADl2PF8kq0pDyyR/iyb8qeq0r8XiwUxhdxcWnzGECGNYSaqZ2fu9PI5+Kb1arI3+2sDngHHd2DvId2xEvHIymataMidPaD59wWcNa7bNiSFRt6VjWdL1a5sX8+qFkSvUvilCllxnlrDrBDYOZgA9iSJRSmHhbpwVzImtZJqOresjEzxmO5YSkyt8jLCgCbo17c9LiFp55qf7cKCiALsFWLvq65Clx/rMCzCaDFFJsAmflSb3D54Okmce8SRVlu0xkDatWPe29F0ekSWUAkXuATEMZuj6zbmRucm7Cn7mH4V+NoePdFqhs11XpTvSMMqGgeNFd7QRRGnp9LvaED79DSTIV2eR/k7qS/XipuVS6IHxwSuPrk6z4+Q+m2pMIq8Y5Fuw5RZ2SIQze6r3JeJ6LGoTs 0tnd8ZVK fsXrS/9edp4pew86NhjOZxzbL70+aavKhbMIigXu4lxHMzsA0ifrjcVnib/1CfShqaEjbfbPPgzw1zwLLTiLKhmcSHpxF3OznMLe0yRcZtNttTf+KdRrXos1VkTu+KrScIBMm9Kzh3FYT8HTqznVEXJPzoysKp63TdqA0eZG0WQIUH27J/cKHBX0k7rES34nzbCrXzXtwnDj5qcX0dyz3NS/V78X8LoSu8hbLrU/KElB+HufPuSACGEw+YBuQxqzFvNQIzABh/dF2qnY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Jul 01, 2025 at 05:36:06PM -0700, Sohil Mehta wrote: > On 7/1/2025 2:58 AM, Kirill A. Shutemov wrote: > > /* > > @@ -672,6 +681,12 @@ static enum kernel_gp_hint get_kernel_gp_address(struct pt_regs *regs, > > if (*addr < ~__VIRTUAL_MASK && > > *addr + insn.opnd_bytes - 1 > __VIRTUAL_MASK) > > return GP_NON_CANONICAL; > > + else if (*addr < ~__VIRTUAL_MASK && > > + cpu_feature_enabled(X86_FEATURE_LASS)) { > > + if (*addr < PAGE_SIZE) > > + return GP_NULL_POINTER; > > + return GP_LASS_VIOLATION; > > + } > > The comments above this section of code say: > > /* > * Check that: > * - the operand is not in the kernel half > * - the last byte of the operand is not in the user canonical half > */ > > They should be updated since we are updating the logic. Okay. > Also, below is easier to read than above: > > if (*addr < ~__VIRTUAL_MASK) { > > if (*addr + insn.opnd_bytes - 1 > __VIRTUAL_MASK) > return EXC_NON_CANONICAL; > > if (cpu_feature_enabled(X86_FEATURE_LASS)) { > if (*addr < PAGE_SIZE) > return EXC_NULL_POINTER; > return EXC_LASS_VIOLATION; > } > } > > I am wondering if the NULL pointer exception should be made > unconditional, even if it is unlikely to reach here without LASS. So > maybe something like this: > > if (*addr < ~__VIRTUAL_MASK) { > > if (*addr + insn.opnd_bytes - 1 > __VIRTUAL_MASK) > return EXC_NON_CANONICAL; > > if (*addr < PAGE_SIZE) > return EXC_NULL_POINTER; > > if (cpu_feature_enabled(X86_FEATURE_LASS)) > return EXC_LASS_VIOLATION; > } That's cleaner. -- Kiryl Shutsemau / Kirill A. Shutemov