From patchwork Wed Mar 22 14:55:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Stoakes X-Patchwork-Id: 13184196 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 B3A10C76195 for ; Wed, 22 Mar 2023 14:55:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4543C6B0072; Wed, 22 Mar 2023 10:55:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3DC7E6B0075; Wed, 22 Mar 2023 10:55:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2A38C6B0078; Wed, 22 Mar 2023 10:55:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 190416B0072 for ; Wed, 22 Mar 2023 10:55:38 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id CDD2BA04B2 for ; Wed, 22 Mar 2023 14:55:37 +0000 (UTC) X-FDA: 80596833114.02.EE292B9 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by imf10.hostedemail.com (Postfix) with ESMTP id DF406C000C for ; Wed, 22 Mar 2023 14:55:35 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=drmJ+Pcc; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.43 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679496936; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cY5q38znnygXEk7MQGfhMNT6fWhXSJdRMwyHM9vnLSQ=; b=Z++mt2Lnx7X24SkAXN23bwDb489aSuEg3zFMNopmtWF49sLi1HLYbk8VSJBBYtXse3hiaz NGOrCWEE3dKd7sm9ttJ98+NaRRd4+54S2fwS5cn20esjLAp+CMOpFRIB0xR4xRseDv5dZb X4Rls8sK4p4FfNBQS6M5c/597/y+w14= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=drmJ+Pcc; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.43 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679496936; a=rsa-sha256; cv=none; b=sEMRnn0No7TN19GOOwwrcYvYEEj7/46YdoXIDjTcEorhFXZ1uGSPr3Roc6JXr3WBpLDCJh WKpRRJVg8htmJCOu4HeX5T1QOJIRkkaDmpyzTrK3P1SqAg5M+YahhGezzMk0u2XcW49SG3 IFZL/PKxclz+LHzejvaQvN95C0W7QhE= Received: by mail-wm1-f43.google.com with SMTP id p34so6712194wms.3 for ; Wed, 22 Mar 2023 07:55:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679496934; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cY5q38znnygXEk7MQGfhMNT6fWhXSJdRMwyHM9vnLSQ=; b=drmJ+Pcc43djxhqw1awHq4b4iQO8E/ZwMtBLjhoA9tEcRTNpBURrY7yjE4EI7NfsLu bH3jeZUqc0xK/6NMBWgWrSeDbRjejfhNzr5foiLQ/NYIPw6Qk9ipxFvUAf+rBNCJXxKL DZDavvEriG1veZTICIFZ21cr9a3TGaOoNEcgGDlGxe6Vb6S+HeS/Z4ZPMAzRxj/BbRdQ 9wKjOBjAb5yFflBKrWZDvkM6NwY8f1qb7jp+9mLtlVVqPPc1LSAupk2DA4IENC63MLwv JOghCnZwhCHXUlXJS+AR69tek9h98hfH91Lcyc7Jd3Vnms55NNgcb9QM9c5JrOaK/cTc mx8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679496934; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cY5q38znnygXEk7MQGfhMNT6fWhXSJdRMwyHM9vnLSQ=; b=4I9j0dibqCfNLV3hXVvGZAV55ko7fMuVee/kPrq5F7a19Hr+GubO/GjukSJavLJel0 PybzVt3etMbnfwBQmmEOGq13vpWoEWoUxLj3Nrr6EMgO4UjRrxvOGi0jZ9GZnxxJ4vwt kPJNKRFzCD1QPy8qbrmdArU0Eyqx3kG4SAZWcvP0bjFLxPxGNhadYWDdAc2Iu62xJhUa FC3W8Hr3bgYUOkwuXYczFVzs+FZN8EQjXs2WHnvIOlrP/u3poluC/Mj2ay78lvQFfRCF Wcjr8LLa66Ryxkbe8UKrk8BQh7NWrbuS5TkyAjLXrJyZlEKeQi5PRjIMk9x9NbbrxupI is/w== X-Gm-Message-State: AO0yUKXXoS9UyCkM1jgCIuVdeFHj+mxrEnX5gWKWUg0coI9jYo4rqa9Q lo4o2fCVR8VCSVIjeUyrQ1HymCffAwg= X-Google-Smtp-Source: AK7set88fsQQmZyZMzeZtdfsDW2RbQpffAgjPKAjeYkaYhWBIWV8+41//AbQV/UVY9dYplSCkPMIMw== X-Received: by 2002:a7b:c3d0:0:b0:3ea:e834:d0d1 with SMTP id t16-20020a7bc3d0000000b003eae834d0d1mr6230620wmj.36.1679496934151; Wed, 22 Mar 2023 07:55:34 -0700 (PDT) Received: from lucifer.home ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.googlemail.com with ESMTPSA id n23-20020a7bcbd7000000b003ed243222adsm16812246wmi.42.2023.03.22.07.55.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Mar 2023 07:55:33 -0700 (PDT) From: Lorenzo Stoakes To: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton Cc: Baoquan He , Uladzislau Rezki , Matthew Wilcox , David Hildenbrand , Liu Shixin , Jiri Olsa , Jens Axboe , Alexander Viro , Lorenzo Stoakes Subject: [PATCH v6 1/4] fs/proc/kcore: avoid bounce buffer for ktext data Date: Wed, 22 Mar 2023 14:55:25 +0000 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: DF406C000C X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: wrik6t4k751ki39abia4ycfeefkxims6 X-HE-Tag: 1679496935-675575 X-HE-Meta: U2FsdGVkX18hdmmmMWLQOdS0GrCyesfqG4Hz//EoEGIWM3WMA5d+sBZx6o++X9YID19M8jWiFQ3zVS8CrJWk/HhX2mba11Vj8/orlLUChghwh+yNd77q8ao3nUWAv3rqsG5UYjyfiXORckcDe9PuRBBjWPvWuIm1jl3SueYtATgV8TDeYTStvXANzHL6cVwhK2bnu5wY/dEgWO5qL1jz56U6sJCKENAeHkcXQljqv9Gt1hdpbW0J2ynMGIOsR9VoDLKzxwTh9DjBljL/wfC86ArsLOCtUcUg0OW+oLzyHOqNgBjnR53fzw3phueHmcDt538JeF6xTbre1z+BUv4WFPExdz5d+oVXxOJ6ne2KUBoBlVJQfOr2v1vzeymXvyfpkKrXETvhjOH4TwDeGnZAtczVv8zwibLLWqwEZ/7CETP6uVpZpJnDze6FE4ZYEPBVM5+EMJ7IYhMJn8UOlDZZu7bDaI9MjwT2DQ3JxuTgPTysjYg3i2qSu9TPjTwcOOfOOUaX6+eq9I86IzAQ8RORwkFsQr2xbmorI6r3yxHktFJOgAciV7IznCEHvkHYMDiHrTr0x6dE297jzgwy+fHIQAcZALCXxaiOX7MzItHuO/pr7Rw/OoMYJ9akCKa6Kq+LcyYMxuUF2R+UnjySibr7XUy9Hj1fgctE2zd3A+wyMXnTqg2OFzJApzm+XbaOnRZ8Aj+up7BDmW+/QHV2K5wm8KgqovO49UGI7o0eLtdFrkAMGL8wym982CMrfz2E4J0+THvqOsuEcALK/U5R9e+eMCYq50Qrt+Wmy7qulBneTMGHctrrZXiLN+5hi9hjLSuQzxeDOZmXc289p9ZXWxmDO+G0u7TTXxOYLL4SxmWvWXREPBkONn0xWZ/4s1cBvCvFYYCSKQyJ8R8384G3WUx3NpZHO0STbSABxKauo1z7wE7/U7W/d0ZaRy5BaQCUmHRHDNen7Ws6dQCHt6U6bEv wCicbfCM Pqo8o7JKUQMDNcNMxlYt3qjMfBm8FMT6Rv8Y2+8WDdta459RRmTaY1elkTopSp/QifTXDQLISdPYz00L9dJ4miVyXEmKv6+WvS1R00o60Tghme4VQgEtWCy4wY7W9gf4LV912J8f7ILet9w6fmiqCI+x/uHU7eDc/831MLQ8v5EHU+UCvX1rRy3VrvgJixmL/Tr3XOyClF6UMsd4UOqLrNiKyixmoJg3Qjgl/ajvH33Efgrrt954Io+oZ1XU+rhZGWEQsE8uFZgp49kC91UswpUB2Wi46CPOJxliTo2e9+g8hVSWXQ8X73uo51UUvbDecYOzVjHtj54I7vvvIoPz/x2VTdCaIVk9cDVNErrDhf9TgNyEQ3Wlj29lR7lNgF1pIlL81U5jnJobHzhs2qHJv8upt/N/273Sg9xzILduW6Pkycs1dWfooJZJkI5TXbV8W+i3ONzMOGGQujVFZ0l7c+m4QVAG2yuEI/4YBWWLEBB8a4t+dzA4u3CScRFq1D1Wc5A/Pl7LvBxY0gjQbMeWTxbqrF+pKtIakvyF8D8dhVGDN6M/LR9e3/RNM9eeUHph/FmHZ 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: Commit df04abfd181a ("fs/proc/kcore.c: Add bounce buffer for ktext data") introduced the use of a bounce buffer to retrieve kernel text data for /proc/kcore in order to avoid failures arising from hardened user copies enabled by CONFIG_HARDENED_USERCOPY in check_kernel_text_object(). We can avoid doing this if instead of copy_to_user() we use _copy_to_user() which bypasses the hardening check. This is more efficient than using a bounce buffer and simplifies the code. We do so as part an overall effort to eliminate bounce buffer usage in the function with an eye to converting it an iterator read. Signed-off-by: Lorenzo Stoakes Reviewed-by: David Hildenbrand --- fs/proc/kcore.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c index 71157ee35c1a..556f310d6aa4 100644 --- a/fs/proc/kcore.c +++ b/fs/proc/kcore.c @@ -541,19 +541,12 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) case KCORE_VMEMMAP: case KCORE_TEXT: /* - * Using bounce buffer to bypass the - * hardened user copy kernel text checks. + * We use _copy_to_user() to bypass usermode hardening + * which would otherwise prevent this operation. */ - if (copy_from_kernel_nofault(buf, (void *)start, tsz)) { - if (clear_user(buffer, tsz)) { - ret = -EFAULT; - goto out; - } - } else { - if (copy_to_user(buffer, buf, tsz)) { - ret = -EFAULT; - goto out; - } + if (_copy_to_user(buffer, (char *)start, tsz)) { + ret = -EFAULT; + goto out; } break; default: