{"id":2229048,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2229048/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-arc/patch/1a55107abe15dd78450888e2b5327c3a56af29b7.1777306795.git.chleroy@kernel.org/","project":{"id":48,"url":"http://patchwork.ozlabs.org/api/1.1/projects/48/?format=json","name":"Linux ARC development","link_name":"linux-arc","list_id":"linux-snps-arc.lists.infradead.org","list_email":"linux-snps-arc@lists.infradead.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<1a55107abe15dd78450888e2b5327c3a56af29b7.1777306795.git.chleroy@kernel.org>","date":"2026-04-27T17:13:47","name":"[RFC,v1,6/9] uaccess: Change copy_{to/from}_user to return -EFAULT","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"e26541c7cdaf18e829fa9e8f2302b9591f5754d9","submitter":{"id":92089,"url":"http://patchwork.ozlabs.org/api/1.1/people/92089/?format=json","name":"Christophe Leroy (CS GROUP)","email":"chleroy@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-arc/patch/1a55107abe15dd78450888e2b5327c3a56af29b7.1777306795.git.chleroy@kernel.org/mbox/","series":[{"id":501692,"url":"http://patchwork.ozlabs.org/api/1.1/series/501692/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-arc/list/?series=501692","date":"2026-04-27T17:13:41","name":"uaccess: Convert small fixed size copy_{to/from}_user() to scoped user access","version":1,"mbox":"http://patchwork.ozlabs.org/series/501692/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2229048/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2229048/checks/","tags":{},"headers":{"Return-Path":"\n <linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=X4kSC1Pt;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=YS9v5ort;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g49Jr1RTmz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 03:18:52 +1000 (AEST)","from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wHPbe-0000000HRXj-3Lv6;\n\tMon, 27 Apr 2026 17:18:50 +0000","from sea.source.kernel.org ([172.234.252.31])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wHPba-0000000HRTU-1AQu;\n\tMon, 27 Apr 2026 17:18:48 +0000","from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby sea.source.kernel.org (Postfix) with ESMTP id E16F243CD6;\n\tMon, 27 Apr 2026 17:18:45 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 5390FC2BCB4;\n\tMon, 27 Apr 2026 17:18:33 +0000 (UTC)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=Xu4rPEnHGUvP7R2BCT6tSm7UIScnNZXJ4K+k+VfAtWc=; b=X4kSC1PtxxHwh1\n\tEqrgpV+4EtaTZvyOyfqweiKM+HyAwjZao5trRj2BpRdmE14Vy+IiBeti3QpE+Ak8Phq+vSa1lf7Rw\n\tgFtUTF5ua8n5xjAAM5U7cFX6J8sq0NJaTXgnvoiojtS4ml51lDVRO1hVpv1HtxA6LVmWIGp71qmkR\n\tHp2QmD98lR/OwW8pY6GvsWtpCRfC53rcIyByZzSnY534cz+cTLm89ey8XQZICgy3q3ZmE49Y5A00O\n\tCKQmI31IMqWR8Oyg/1ZJtSCiJy+zQIR/h8eEaqc/+kriEzrU4TiBqK+aqzjbedFrR+kjynd1EtrMV\n\tiI+B1ZV3fY0tpNNZTrbg==;","v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777310325;\n\tbh=x+yz+Ptlr8yUKihbRCrYsj2OzN4+HDHdWj3mTkeeywo=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=YS9v5orti9jIm2coPKy7cH4iQCLjTYOH2T4kGrmAKw1lk2UpD8UcWDut4XHtMo5CX\n\t 290KHU3PNOVzMmnTKEL1o/OfzgOnzBVsJnbuGicRbc3HqjVsrjLo1DZ4Ncwz6tafWZ\n\t SG8/hG1Ct8pUgSHrDrW4chwaJ34uCldA2tlOQo4bI8M4kMxsW5bP0OLNOAC7BeTwPk\n\t Mil/pgBJA2/iCGWwmbEh5WNZZrQ4Md/gtqmnREocwFdhobkWjiqhIB30lRO/GV15k3\n\t DZOePxOSt4vdcYmGqKSVWX7R1FegGyxqEmqkjMUEcFWkKzHsBpXNo8/6bbP3EGANbq\n\t KZwGUUWEURiLg=="],"From":"\"Christophe Leroy (CS GROUP)\" <chleroy@kernel.org>","To":"Yury Norov <ynorov@nvidia.com>,\n\tAndrew Morton <akpm@linux-foundation.org>,\n\tLinus Torvalds <torvalds@linux-foundation.org>,\n\tDavid Laight <david.laight.linux@gmail.com>,\n\tThomas Gleixner <tglx@linutronix.de>","Cc":"\"Christophe Leroy (CS GROUP)\" <chleroy@kernel.org>,\n\tlinux-alpha@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinux-snps-arc@lists.infradead.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-mips@vger.kernel.org,\n\tlinuxppc-dev@lists.ozlabs.org,\n\tkvm@vger.kernel.org,\n\tlinux-riscv@lists.infradead.org,\n\tlinux-s390@vger.kernel.org,\n\tsparclinux@vger.kernel.org,\n\tlinux-um@lists.infradead.org,\n\tdmaengine@vger.kernel.org,\n\tlinux-efi@vger.kernel.org,\n\tlinux-fsi@lists.ozlabs.org,\n\tamd-gfx@lists.freedesktop.org,\n\tdri-devel@lists.freedesktop.org,\n\tintel-gfx@lists.freedesktop.org,\n\tlinux-wpan@vger.kernel.org,\n\tnetdev@vger.kernel.org,\n\tlinux-wireless@vger.kernel.org,\n\tlinux-spi@vger.kernel.org,\n\tlinux-media@vger.kernel.org,\n\tlinux-staging@lists.linux.dev,\n\tlinux-serial@vger.kernel.org,\n\tlinux-usb@vger.kernel.org,\n\txen-devel@lists.xenproject.org,\n\tlinux-fsdevel@vger.kernel.org,\n\tocfs2-devel@lists.linux.dev,\n\tbpf@vger.kernel.org,\n\tkasan-dev@googlegroups.com,\n\tlinux-mm@kvack.org,\n\tlinux-x25@vger.kernel.org,\n\trust-for-linux@vger.kernel.org,\n\tlinux-sound@vger.kernel.org,\n\tsound-open-firmware@alsa-project.org,\n\tlinux-csky@vger.kernel.org,\n\tlinux-hexagon@vger.kernel.org,\n\tloongarch@lists.linux.dev,\n\tlinux-m68k@lists.linux-m68k.org,\n\tlinux-openrisc@vger.kernel.org,\n\tlinux-parisc@vger.kernel.org,\n\tlinux-sh@vger.kernel.org,\n\tlinux-arch@vger.kernel.org","Subject":"[RFC PATCH v1 6/9] uaccess: Change copy_{to/from}_user to return\n -EFAULT","Date":"Mon, 27 Apr 2026 19:13:47 +0200","Message-ID":"\n <1a55107abe15dd78450888e2b5327c3a56af29b7.1777306795.git.chleroy@kernel.org>","X-Mailer":"git-send-email 2.49.0","In-Reply-To":"<cover.1777306795.git.chleroy@kernel.org>","References":"<cover.1777306795.git.chleroy@kernel.org>","MIME-Version":"1.0","X-Developer-Signature":"v=1; a=openpgp-sha256; l=2416; i=chleroy@kernel.org;\n h=from:subject:message-id; bh=x+yz+Ptlr8yUKihbRCrYsj2OzN4+HDHdWj3mTkeeywo=;\n b=owGbwMvMwCV2d0KB2p7V54MZT6slMWS+nxkjryH88LzkjscmK202zhcwuOPhcJTlidTVNdtCP\n 9vs/VPG2lHKwiDGxSArpshy/D/3rhldX1Lzp+7Sh5nDygQyhIGLUwAm0nCN4b9/yT75hpDtr4zk\n 9XPfORmtVO2p/XH+8bFg730PPNfMvn6dkWHDjsJSC09Vr9bDobdrxTgfMm1ckveKR+Rkud3skLM\n HLXgA","X-Developer-Key":"i=chleroy@kernel.org; a=openpgp;\n fpr=10FFE6F8B390DE17ACC2632368A92FEB01B8DD78","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20260427_101846_369728_53A92076 ","X-CRM114-Status":"UNSURE (   9.10  )","X-CRM114-Notice":"Please train this message.","X-Spam-Score":"-2.1 (--)","X-Spam-Report":"Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam.  The original\n message has been attached to this so you can view it or label\n similar future email.  If you have any questions, see\n the administrator of that system for details.\n Content preview:  Now that copy_{to/from}_user_partial() are used by callers\n    which expect partial copy with number of not copied bytes as return value,\n    change copy_{to/from}_user() to return an int, and return -EFAULT [...]\n Content analysis details:   (-2.1 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -0.0 SPF_PASS               SPF: sender matches SPF record\n  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record\n -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from\n                             envelope-from domain\n -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from\n author's\n                             domain\n -0.1 DKIM_VALID             Message has at least one valid DKIM or DK\n signature\n  0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n not necessarily valid\n -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n                             [score: 0.0000]\n -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender","X-BeenThere":"linux-snps-arc@lists.infradead.org","X-Mailman-Version":"2.1.34","Precedence":"list","List-Id":"Linux on Synopsys ARC Processors <linux-snps-arc.lists.infradead.org>","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-snps-arc>,\n <mailto:linux-snps-arc-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-snps-arc/>","List-Post":"<mailto:linux-snps-arc@lists.infradead.org>","List-Help":"<mailto:linux-snps-arc-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-snps-arc>,\n <mailto:linux-snps-arc-request@lists.infradead.org?subject=subscribe>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-snps-arc\" <linux-snps-arc-bounces@lists.infradead.org>","Errors-To":"\n linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"},"content":"Now that copy_{to/from}_user_partial() are used by callers which expect\npartial copy with number of not copied bytes as return value, change\ncopy_{to/from}_user() to return an int, and return -EFAULT when the\ncopy is not complete.\n\nSigned-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>\n---\n include/linux/uaccess.h | 28 ++++++++++++++++++++++++----\n 1 file changed, 24 insertions(+), 4 deletions(-)","diff":"diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h\nindex 2d37173782b3..33b7d0f5f808 100644\n--- a/include/linux/uaccess.h\n+++ b/include/linux/uaccess.h\n@@ -211,7 +211,7 @@ extern __must_check unsigned long\n _copy_to_user(void __user *, const void *, unsigned long);\n \n static __always_inline unsigned long __must_check\n-copy_from_user(void *to, const void __user *from, unsigned long n)\n+copy_from_user_common(void *to, const void __user *from, unsigned long n, bool partial)\n {\n \tif (!check_copy_size(to, n, false))\n \t\treturn n;\n@@ -221,10 +221,20 @@ copy_from_user(void *to, const void __user *from, unsigned long n)\n \t\treturn _inline_copy_from_user(to, from, n);\n }\n \n-#define copy_from_user_partial copy_from_user\n+static __always_inline unsigned long __must_check\n+copy_from_user_partial(void *to, const void __user *from, unsigned long n)\n+{\n+\treturn copy_from_user_common(to, from, n, true);\n+}\n+\n+static __always_inline int __must_check\n+copy_from_user(void *to, const void __user *from, unsigned long n)\n+{\n+\treturn copy_from_user_common(to, from, n, false) ? -EFAULT : 0;\n+}\n \n static __always_inline unsigned long __must_check\n-copy_to_user(void __user *to, const void *from, unsigned long n)\n+copy_to_user_common(void __user *to, const void *from, unsigned long n, bool partial)\n {\n \tif (!check_copy_size(from, n, true))\n \t\treturn n;\n@@ -235,7 +245,17 @@ copy_to_user(void __user *to, const void *from, unsigned long n)\n \t\treturn _inline_copy_to_user(to, from, n);\n }\n \n-#define copy_to_user_partial copy_to_user\n+static __always_inline unsigned long __must_check\n+copy_to_user_partial(void __user *to, const void *from, unsigned long n)\n+{\n+\treturn copy_to_user_common(to, from, n, true);\n+}\n+\n+static __always_inline int __must_check\n+copy_to_user(void __user *to, const void *from, unsigned long n)\n+{\n+\treturn copy_to_user_common(to, from, n, false) ? -EFAULT : 0;\n+}\n \n #ifndef copy_mc_to_kernel\n /*\n","prefixes":["RFC","v1","6/9"]}