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 25361CD3431 for ; Wed, 4 Sep 2024 07:51:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B3DFD8D0233; Wed, 4 Sep 2024 03:51:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AEE0D8D0228; Wed, 4 Sep 2024 03:51:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9B5BD8D0233; Wed, 4 Sep 2024 03:51:03 -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 7D0048D0228 for ; Wed, 4 Sep 2024 03:51:03 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 18B6B120D41 for ; Wed, 4 Sep 2024 07:51:03 +0000 (UTC) X-FDA: 82526284806.30.359E42D Received: from pegase2.c-s.fr (pegase2.c-s.fr [93.17.235.10]) by imf23.hostedemail.com (Postfix) with ESMTP id E0D56140004 for ; Wed, 4 Sep 2024 07:50:59 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of christophe.leroy@csgroup.eu designates 93.17.235.10 as permitted sender) smtp.mailfrom=christophe.leroy@csgroup.eu; dmarc=pass (policy=quarantine) header.from=csgroup.eu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725436211; a=rsa-sha256; cv=none; b=4+zHgmtjK668kT7aMUFnrwsJxFkDu1Tv3zr+T0SQTy7MPejbhlqqk8LiOzC1hz+FfpBDKN Ba/3/rGl+V4iJhOQTz34PTP/QVKnJ/YReTrAfUwZw4Vdc+xFe+dVgxxoxqQOSZs/GBTf4Q Snvweret1L/U1WRuaOA5Chr5ha7pROM= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of christophe.leroy@csgroup.eu designates 93.17.235.10 as permitted sender) smtp.mailfrom=christophe.leroy@csgroup.eu; dmarc=pass (policy=quarantine) header.from=csgroup.eu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725436211; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AU1p1DXBVmXIl6YxYAEjEuw7v6nXJYuynqitO9fDnNA=; b=0/cGzYlJmdS2Ui8INqGdTPI1fNqKwrmyfJIlm3tB4aggjfL2L2lt36kxLcAaue/OCy0+st PsYWfwQ9XeI9Sv0QqLCnqNTOe2Nk1WgIoiMVTFq1slSrzUwQQ3qx+/SlkMd+BGfhrjomAx SLSf0vAw8Id0YIKFGP/0OsJGUHTz/ac= Received: from localhost (mailhub3.si.c-s.fr [172.26.127.67]) by localhost (Postfix) with ESMTP id 4WzF6T6FRvz9sSC; Wed, 4 Sep 2024 09:50:57 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase2.c-s.fr ([172.26.127.65]) by localhost (pegase2.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MyT5AqoNw1ah; Wed, 4 Sep 2024 09:50:57 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase2.c-s.fr (Postfix) with ESMTP id 4WzF6T53SRz9sS7; Wed, 4 Sep 2024 09:50:57 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 9D7618B77A; Wed, 4 Sep 2024 09:50:57 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id XVy8Rvp824KA; Wed, 4 Sep 2024 09:50:57 +0200 (CEST) Received: from [192.168.234.246] (unknown [192.168.234.246]) by messagerie.si.c-s.fr (Postfix) with ESMTP id EC5188B778; Wed, 4 Sep 2024 09:50:56 +0200 (CEST) Message-ID: <64e74f4d-948d-442e-9810-69907915401c@csgroup.eu> Date: Wed, 4 Sep 2024 09:50:56 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] mm: make copy_to_kernel_nofault() not fault on user addresses To: Omar Sandoval , linux-mm@kvack.org, Andrew Morton , Benjamin Gray , "Christopher M. Riedl" Cc: Christoph Hellwig , x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-um@lists.infradead.org, kernel-team@fb.com References: Content-Language: fr-FR From: Christophe Leroy In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Stat-Signature: skzq7fzhk7o9dabjcsi7htd355qpa8pu X-Rspamd-Queue-Id: E0D56140004 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1725436259-67025 X-HE-Meta: U2FsdGVkX19fXeA2p1AbLn/4+0R2q/kWfITiHBAjw9Fsk8YfbquDVWmn7nITWILxUBN67bo4bfRz6Ggcvj2HW56OtV5zqG1QIfD6f/DjcnhXbC8/Iyt3YN8/elRYx65LzFCWmbMGTrnB0vzgzAZhD6sDCUotSxab3rBG1X76z98pKN8AFwVcy3M/U9b6BTCevEdb9ux1RozYEVD1gtZ1geyvbFRRwdu8fnwJ/dHcPNa6BsO8jJgrDZK64X4hR/f5QponmuE9tryW59CQ+P2fTz8jLFjWdV4OYSnH9Hex7H3I/kXxa8zFFoy926ctTtd0hn/VdU3TuZ8wTO3LMcFg7tmAwEiZulrOn4Da2PX4UYPKUABV5y8d8O5ysFltgu28qPOh0I8ORqzoFdXYAR3YuEfWH+P9I9CdnzZztwfTJJo/UOk31uQkByFtOUEbmujq+zV3u6f88SM0ofekFEmJ0XiI1ASQ8I4Bq8iCsRqHrmMXKaeYnQm2ddUcuOmKvXxdB1qKaZZX9Gwj9zS8OYCfJnu31PacM60WC5OKBISLedXvB3+a0O5W46V29spWLEnd71SxqmH2jHQhPVQWhakpq0U65O6t26cJg0g8v6/jkgqALzcNmi1dcPEPhDWOwTFu/qzNaYzW0QEgCyEa5R5qXrypOUWYQxIFLLqR72g1fF0vD3t571VER1YxaBsI84LD/hNBmnepb4joyKt1imbvkuY49ClaL6bv0K20u7z0O56ih2st+h0Iv4Ni4jbABm2DcuGIo71IIWdXQyp5pH8v1ETmQ+6fHffLzxbAbvGDFg16HJHqlW3/urrvuZaKaVI/75GGA8ht3tPy8e4E4EAi0uVxRrE4hDJah19DWI2kdq/aQ2SZ+AmxAqRzocMHHAzZsTDJONAU4QaELWcs9md5XV4ABYEAitS+xCr7o8F7WDDOP/MgqwUPNp9EiztAOgXD4UA0cX9rTE0VOC+oJCK TZfBWfa4 Iclkpbg0lJyuJwv6iHkFN9/a7rsJlsWlUxqLbIXcwnVoQ5tsT6K3lUayFiMJyn3KO9y6/4uc6HHuRl4WW0Oi2WDeKvRUzMut7kx19MuFBUcT7hYLD4GyOBELqvM7npaBZnVUMp9fKQJwfFHhJBipy0RfCBgleaQz/BSRwY37cqBnd6XnLAidjNJujfMJoq64U9iNZlH6K/HqgB+ocGu9lY/N2NfohEZYE72x/eWy6tgxYV252x4hfpf7pfG6wNc0HTii4geykE5lbfBUj5juJTwb/PvQoFqMFNHifw+2GTd/XhlA= 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: Hi, Le 02/09/2024 à 07:31, Omar Sandoval a écrit : > [Vous ne recevez pas souvent de courriers de osandov@osandov.com. Découvrez pourquoi ceci est important à https://aka.ms/LearnAboutSenderIdentification ] > > From: Omar Sandoval > > I found that on x86, copy_to_kernel_nofault() still faults on addresses > outside of the kernel address range (including NULL): > > # echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc > # echo g > /proc/sysrq-trigger > ... > [15]kdb> mm 0 1234 > [ 94.652476] BUG: kernel NULL pointer dereference, address: 0000000000000000 ... > > Note that copy_to_kernel_nofault() uses pagefault_disable(), but it > still faults. This is because with Supervisor Mode Access Prevention > (SMAP) enabled, do_user_addr_fault() Oopses on a fault for a user > address from kernel space _before_ checking faulthandler_disabled(). > > copy_from_kernel_nofault() avoids this by checking that the address is > in the kernel before doing the actual memory access. Do the same in > copy_to_kernel_nofault() so that we get an error as expected: > > # echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc > # echo g > /proc/sysrq-trigger > ... > [17]kdb> mm 0 1234 > kdb_putarea_size: Bad address 0x0 > diag: -21: Invalid address > > Signed-off-by: Omar Sandoval > --- > mm/maccess.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/mm/maccess.c b/mm/maccess.c > index 72e9c03ea37f..d67dee51a1cc 100644 > --- a/mm/maccess.c > +++ b/mm/maccess.c > @@ -61,6 +61,9 @@ long copy_to_kernel_nofault(void *dst, const void *src, size_t size) > if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)) > align = (unsigned long)dst | (unsigned long)src; > > + if (!copy_kernel_nofault_allowed(dst, size)) > + return -ERANGE; > + > pagefault_disable(); > if (!(align & 7)) > copy_to_kernel_nofault_loop(dst, src, size, u64, Efault); > -- > 2.46.0 > This patch leads to the following errors on ppc64le_defconfig: [ 2.423930][ T1] Running code patching self-tests ... [ 2.428912][ T1] code-patching: test failed at line 395 [ 2.429085][ T1] code-patching: test failed at line 398 [ 2.429561][ T1] code-patching: test failed at line 432 [ 2.429679][ T1] code-patching: test failed at line 435 This seems to be linked to commit c28c15b6d28a ("powerpc/code-patching: Use temporary mm for Radix MMU"), copy_from_kernel_nofault_allowed() returns false for the patching area. Christophe