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 73106CFC276 for ; Tue, 15 Oct 2024 08:29:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A4D76B0085; Tue, 15 Oct 2024 04:29:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 053D56B0089; Tue, 15 Oct 2024 04:29:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E5CC76B008A; Tue, 15 Oct 2024 04:29:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C7CD86B0085 for ; Tue, 15 Oct 2024 04:29:13 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D1C8C1C4F02 for ; Tue, 15 Oct 2024 08:29:03 +0000 (UTC) X-FDA: 82675161618.05.966E683 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf03.hostedemail.com (Postfix) with ESMTP id 1EAC82000B for ; Tue, 15 Oct 2024 08:29:07 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=egqvVNG6; spf=pass (imf03.hostedemail.com: domain of nathan@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=nathan@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728980878; a=rsa-sha256; cv=none; b=nmdnj9BfxbCtQGXYeVg5SYiE+9GIol6LuU8RppHSM9etMAl4ZMn96pQYiTsk+B1cPsANR7 hnwD4GSUWp7OmTlEQFQxNnF1SsHgxupfDOppSapfb1mvXS6zJvuVDjqOaAqNw4PomMQ9+j Axosp8imAYl04OVQfxQRD2R5Z7u0f2k= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=egqvVNG6; spf=pass (imf03.hostedemail.com: domain of nathan@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=nathan@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728980878; 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=7f34hNZ8N5QMtc9kv7/p1tvlxDcQfSdeHysdRXgwdRk=; b=YrKi+HrlRUutwBjSVe8ERMz8YOvUqmonen+gSI1rm+6D9+eMaFOg7Xzd92sl9V8le4GuEZ ny3bRfkweqhpQ7rbnQ7yd9LRN5PNXP3iIALy4yNlqKWw9QhSJjk9zCp67/y2n71NjTYKoH hGq4HYEeJgUU0eAZnZfXU+RgdiwH5mE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 8E090A412DE; Tue, 15 Oct 2024 08:29:01 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CFFDFC4CEC7; Tue, 15 Oct 2024 08:29:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1728980950; bh=DsgcZIwzu+lcz+sCcqq5yd6bbrmg5UWNN75kmiN7u1o=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=egqvVNG6q9wlgpkO2ihI5nbC6bmr+MKMXS2UkyLdtZUnRa2mJjPhb/GoHeE8B3JIV VDOtfy1iCH02B47+vC2mLdYrhXPmRCcdJ1+Qf6WXe8/wfp0qMu9/oa8S2JtMyqJO/O ZmBQkqH3b1vcstwGj/aIQZ/QJ/x/VWHD7oxFh+9oQa2EPZRfC0PAr1bUMSRbgTw0WX C7Lug7jeKA6ulz3nyHPgkg0UGzQL6Atd/tuR2Y2ST5aOa7GcMnBjH9MVS3YMhP6L1x 3BVwGozDPiF2n6afO7840UO9nN2SDmvcqv5gq/FNe0QhCmwM6wOayqIt/j1N459swo /mUI7oPo31iJQ== Date: Tue, 15 Oct 2024 01:29:05 -0700 From: Nathan Chancellor To: Mike Rapoport Cc: Andrew Morton , Andreas Larsson , Andy Lutomirski , Ard Biesheuvel , Arnd Bergmann , Borislav Petkov , Brian Cain , Catalin Marinas , Christoph Hellwig , Christophe Leroy , Dave Hansen , Dinh Nguyen , Geert Uytterhoeven , Guo Ren , Helge Deller , Huacai Chen , Ingo Molnar , Johannes Berg , John Paul Adrian Glaubitz , Kent Overstreet , "Liam R. Howlett" , Luis Chamberlain , Mark Rutland , Masami Hiramatsu , Matt Turner , Max Filippov , Michael Ellerman , Michal Simek , Oleg Nesterov , Palmer Dabbelt , Peter Zijlstra , Richard Weinberger , Russell King , Song Liu , Stafford Horne , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Uladzislau Rezki , Vineet Gupta , Will Deacon , bpf@vger.kernel.org, linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-trace-kernel@vger.kernel.org, linux-um@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, sparclinux@vger.kernel.org, x86@kernel.org Subject: Re: [PATCH v5 6/8] x86/module: perpare module loading for ROX allocations of text Message-ID: <20241015082905.GA1235948@thelio-3990X> References: <20241009180816.83591-1-rppt@kernel.org> <20241009180816.83591-7-rppt@kernel.org> <20241010225411.GA922684@thelio-3990X> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: udyh3cq33aox4pfoijo6ywxxq11im154 X-Rspamd-Queue-Id: 1EAC82000B X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1728980947-655960 X-HE-Meta: U2FsdGVkX1/eiYl05aq81UfJj/re/jKQ01Lrqobx3emdKY4diTFUzmg3N3gzz6tgPNvarD8puL5SZdiwwVr0ad5k6HFTHh4b2dnmobs0EnnpSh62kaLHCMhT/wQlO9QVpFQxWke7E0/kvUIqYCQKnF8bWrr184ev7HPQq8WEGG7mh58V0A2saXFZ/4zx73hSYc7fKPqnN1t6TnKJZC8psAytAXZFszzLCKdbJsODi1q9oUp4NwK7t36uKlIfgDIQvBLzn6lfhd2C3qDKG/s9nHdzXnt0UlOTdFHlP86+AjLPoJZ5LTbbNyV0RBLX73YWC/P8de9RBVLOHUah2OswRrIVhguTuADl0zdPRqhMVOf1ULLykM067y1dAJG7xMqJVRH5IXSkvX42JIvVQhorGPEZ3FAX9/rh2U+piTkIsSx1/B6KQzBpzKg3VX4Lxsvl2SwVtUnQcf6mVLHutD+WHuDLjkc+sfjVFjFMlpzJV6J6vgOHjB2GHZUv7Eb9PlhWyy3WAp5tILTpcpqON1vfIkURRrPCEnq1n72gIpb2tGelRON6LMT5Sw8VTnKoiuFM0+hk9llVGX7bSCtK2vVYGmF+aGjc3iXHAUzgbgUtBMtTbPvn08srUvDt510Vs1s+2qQ3NKQG3v1n+cNzekX8HviHnmRUELC8SuaGQAjWpKcQOG0q5FQrfd0hBqrLZ8SXUHmCepp/5he4LWLa8GXdxJ8AsVmdB9QlmqkY845u1ZPqMakM0jwIOLChwqPpI1NhJropctQ1eVnfsdzSDwkJEQlh/0VOfNTOg5PlQ1xI6fwwivsNuAQ1ZWc+XMdICmJlY9kMmzdkfQk9n9Hkk4xobZyLbUo/ueGcOKu6IyhGLvAlCUdIUx7l/Wkx8SbVKAmuwPcMVcXTufxARrWEdG/SbxqsrDZh5gyWD7IuMvkHch/P0X3/af4HomfCvlEzX5Bz+eydJBR3eZW0a92aHe8 OmYM1byZ hNMBxkSasbkOY1gVdL9KmekTFD+uIYR6KQU/ArUN/LJf1YvOpJ4qDzeq3xDnthJ8c/0pD6e+GQiktg/oAcxmka/TR+KjxwspgyBULifBDdY/soIFkdXs5oGMdab/qU7vitEte9B5ciWQY+aMXUGV609Cb6xEfew51qyHSsN5I8HqqkCbL9YjZDorWSIJw1UKNXgry7MS7UuUnnhdDrR5+/w7nMVblDo9Qab23HJkhGDTGaqvMX98rbmkDwtbjvna0edmxqaFW6FB1FA8b6GxjJprmA3ok38R8xHn4 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 Fri, Oct 11, 2024 at 03:58:04PM +0300, Mike Rapoport wrote: > I overlooked how cfi_*_callers routines update addr. > This patch should fix it: Thanks, can confirm. My boot is working again and LKDTM's CFI_FORWARD_PROTO test properly fails. > diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c > index 3b3fa93af3b1..cf782f431110 100644 > --- a/arch/x86/kernel/alternative.c > +++ b/arch/x86/kernel/alternative.c > @@ -1148,11 +1148,13 @@ static int cfi_disable_callers(s32 *start, s32 *end, struct module *mod) > > for (s = start; s < end; s++) { > void *addr = (void *)s + *s; > - void *wr_addr = module_writable_address(mod, addr); > + void *wr_addr; > u32 hash; > > addr -= fineibt_caller_size; > - hash = decode_caller_hash(addr); > + wr_addr = module_writable_address(mod, addr); > + hash = decode_caller_hash(wr_addr); > + > if (!hash) /* nocfi callers */ > continue; > > @@ -1172,11 +1174,12 @@ static int cfi_enable_callers(s32 *start, s32 *end, struct module *mod) > > for (s = start; s < end; s++) { > void *addr = (void *)s + *s; > - void *wr_addr = module_writable_address(mod, addr); > + void *wr_addr; > u32 hash; > > addr -= fineibt_caller_size; > - hash = decode_caller_hash(addr); > + wr_addr = module_writable_address(mod, addr); > + hash = decode_caller_hash(wr_addr); > if (!hash) /* nocfi callers */ > continue; > > @@ -1249,11 +1252,12 @@ static int cfi_rand_callers(s32 *start, s32 *end, struct module *mod) > > for (s = start; s < end; s++) { > void *addr = (void *)s + *s; > - void *wr_addr = module_writable_address(mod, addr); > + void *wr_addr; > u32 hash; > > addr -= fineibt_caller_size; > - hash = decode_caller_hash(addr); > + wr_addr = module_writable_address(mod, addr); > + hash = decode_caller_hash(wr_addr); > if (hash) { > hash = -cfi_rehash(hash); > text_poke_early(wr_addr + 2, &hash, 4); > @@ -1269,14 +1273,15 @@ static int cfi_rewrite_callers(s32 *start, s32 *end, struct module *mod) > > for (s = start; s < end; s++) { > void *addr = (void *)s + *s; > - void *wr_addr = module_writable_address(mod, addr); > + void *wr_addr; > u32 hash; > > addr -= fineibt_caller_size; > - hash = decode_caller_hash(addr); > + wr_addr = module_writable_address(mod, addr); > + hash = decode_caller_hash(wr_addr); > if (hash) { > text_poke_early(wr_addr, fineibt_caller_start, fineibt_caller_size); > - WARN_ON(*(u32 *)(addr + fineibt_caller_hash) != 0x12345678); > + WARN_ON(*(u32 *)(wr_addr + fineibt_caller_hash) != 0x12345678); > text_poke_early(wr_addr + fineibt_caller_hash, &hash, 4); > } > /* rely on apply_retpolines() */ > > > Cheers, > > Nathan > > -- > Sincerely yours, > Mike.