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 89758C77B7F for ; Sun, 22 Jun 2025 14:11:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B68C16B009A; Sun, 22 Jun 2025 10:11:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B18606B009B; Sun, 22 Jun 2025 10:11:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A075A6B009C; Sun, 22 Jun 2025 10:11:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 8D7476B009A for ; Sun, 22 Jun 2025 10:11:58 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id DFC2A1023D6 for ; Sun, 22 Jun 2025 14:11:57 +0000 (UTC) X-FDA: 83583225474.18.02B0F03 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by imf26.hostedemail.com (Postfix) with ESMTP id E2569140005 for ; Sun, 22 Jun 2025 14:11:55 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ApcqCEoE; spf=pass (imf26.hostedemail.com: domain of snovitoll@gmail.com designates 209.85.128.43 as permitted sender) smtp.mailfrom=snovitoll@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750601516; a=rsa-sha256; cv=none; b=uEEJIjhU0/COuVwD6QAgQ5ZfhB6QHTnQiVJHkvnmXQ16T8s7d+ajoY7975H7RCEpQd39gT 3XihDazFnzbSs0qRTpGRf+dNFRHxAGsFjcAQHnTHWelSw9eYw6gili8FXwy+F2nPrb/Aho 0X4+vJt1mCmIjFouolbl0nevFHs7Bio= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ApcqCEoE; spf=pass (imf26.hostedemail.com: domain of snovitoll@gmail.com designates 209.85.128.43 as permitted sender) smtp.mailfrom=snovitoll@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750601516; 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:dkim-signature; bh=gQvsm7fpCMuYnjdMO+OlD8VealdHt7K+J4wH5CEjQ4E=; b=xdsV9vE9YFRl7DSb5XRG4ENF5g2eRL8WsRVumYl8uQzX4wWlonGT1FjMsCMA1bmGawvTyI D92uP98Ck/Ua7p0rdiZ5EAY1l/SGBeEb4dvU2di9aH6t3MV+un4koXkFrrqsGBwLl5yDY5 ZB/Kuglx0WOnNdm6klJs3XCay1W3mo8= Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-453647147c6so22705065e9.2 for ; Sun, 22 Jun 2025 07:11:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750601514; x=1751206314; darn=kvack.org; 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=gQvsm7fpCMuYnjdMO+OlD8VealdHt7K+J4wH5CEjQ4E=; b=ApcqCEoE527ceIunMKrX9JJ8su6wWcr2BZc0gNCuj9hrq/9ycWcSuPtideFzvq3U94 xJUP0jePsV6BeCZ8PhOTSY215bakEswR+vyf9REiJGXELssog2uVqoWhU/u7iaiYYxrs 0TSyw3+9CL+t76RJXcPbjfpy0/8oEy8XN6ulh4Ls28qXqZJ/v2HDP85g4sl9FF6nBuXi d48+CMTFkEuQqqc75vb2ScIJh87HoKaubae82O+42f73yVOEOKtSST1ZSEZYFcLEYTDb u/BJH9w+pvxPX77WwSEGECgPN0m+tMcTf0vVUE/M6mZru7I23Zffs8JNHGBX7Xos/R71 hY7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750601514; x=1751206314; 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=gQvsm7fpCMuYnjdMO+OlD8VealdHt7K+J4wH5CEjQ4E=; b=PwA9OIiBPsw0bxcAXsaBTRDckaT2WkPGsq8HxICFEne/lvmmw7mKDl4xT+j40yn2D9 6rb+k2CJiuMDoeQco6KU/4cptmPc/zF2/7Wh/J/NaCEepyW0vtHF+XZlW4a3ODYXxVL+ tOb4vXqWdH1kbBT/bH46QcqutrnqjqEq2eHadIY4JeTvdCjB7fQu9LU6gLnDnKpG0Fly fr6rfF4Aevv9GshWBRMCcSPtrHlT5oA8NdxUQjcNAx9gPzgttELEqllN0CURziwLzVeH ltmO2e5DRiEBpnbUlpZjYWSf1nG2em0DWWYjGxbibgGFzSLg5iSWG0vKBP77sFf2vcwU sI1Q== X-Forwarded-Encrypted: i=1; AJvYcCUuEvDPfTWziwoAZMYlhTFawcAV3SrvDKglEpKuCMdVAAtmo36eKXrVgtkvsxKQ5ndtnHIxdOnzRw==@kvack.org X-Gm-Message-State: AOJu0Yy8Y0eHjUjUSAB5UwKRH+5DSzlKi6fSfodUoA6OLwpNtU4cYlRv zGLYsaWle/IEcpnb7rofIThHxECgAjgm9mle4kRowXxv11fXLetJ0kK/ X-Gm-Gg: ASbGncsrEfSBNr93s8GZKOGqEuFhPFMz6jHVn28amZ+DKgvm2AEcGI6EiMGT3DFuSRa XogP9sA/MRH2OyNicvBIqeedMOurkjP07mwuwr3wUHZfLSWSGaZq0M642IABnt1NJiesRxOgYGr cLq520ys7Hgt/z5KCIxAqpN/uzF6E91i5gpSWqMKYo++n5rYUQLlPkBrv8Yp5cde6Ec8XAisOwc Pwl28CSL17nhsOUAqBm+WCCLebIJdg4bTB0VJNQVNAx92uscavwsBrc9X2AEivqwVz1At8Q6Jnr bqnqPc447WNyjWV9CO+8I8xNXwMYdD1SCKkoIkJjv5OA/IsTtne3BkxNYczTwEwhAwMClu4luOv nxgsJp7sHXRBKnqdsI1yZztA/Af3h1EiFidTL9K0yQIt0HY1Q4jdRimoqThrM X-Google-Smtp-Source: AGHT+IHAlPR/N4kBvNYmCpXmmcKJYQ0IJZsc7viblhNP+ybWRIt4E0uKoKYzRwNSswAi/4GCCRqYEQ== X-Received: by 2002:a05:600c:4e8b:b0:453:608:a18b with SMTP id 5b1f17b1804b1-453654cb7dfmr103410815e9.9.1750601514096; Sun, 22 Jun 2025 07:11:54 -0700 (PDT) Received: from localhost.localdomain (ec2-3-122-242-201.eu-central-1.compute.amazonaws.com. [3.122.242.201]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a6d297ccbcsm6775771f8f.91.2025.06.22.07.11.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 Jun 2025 07:11:53 -0700 (PDT) From: Sabyrzhan Tasbolatov To: andreyknvl@gmail.com Cc: akpm@linux-foundation.org, arnd@arndb.de, david@redhat.com, dvyukov@google.com, elver@google.com, glider@google.com, hch@infradead.org, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, ryabinin.a.a@gmail.com, snovitoll@gmail.com, vincenzo.frascino@arm.com Subject: [PATCH v2] mm: unexport globally copy_to_kernel_nofault Date: Sun, 22 Jun 2025 19:11:42 +0500 Message-Id: <20250622141142.79332-1-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: E2569140005 X-Stat-Signature: dboqtur3814zphq6x7m5t38oigsdmftm X-Rspam-User: X-HE-Tag: 1750601515-308198 X-HE-Meta: U2FsdGVkX1/PPVFWam6VGrpDhUazDE1zNaJmMelrcLevO9zjzpr/N7o3gYOXH/K2Ifae7L0ecUzjJZcN1nNdtxKWVYANm4dIo0Y0qbYDpPBoGPuvfULDL6obWZGdetzRJ+HbBbn37sxz4lNQxnWVgKh8CleebfsGDiPryM1n1+wwUMyQTyxpKOBycI85/mjt9aWLB5lDqyoXhaSMYmzXAtQchOFHu7Rj1PENK+50xvwbeEuWnqxt2ZR6RpZPyNWfvyRLlghhFmBlzRbBm3PVw9wTpfS94b7HpQqmHzRdWEaXo5Je3DhuaOGG1sryoFEh1tAZEmo+h5x216xfVhIt4+n/DmYZP9/ArRxWxmsLu+RUfk3Eb1iKSAzCu4B+x70guwGJosA9pyaJXYOwPhu2IxIhuxfZxrWFtedEDPUs3GKu9A3Pc6ngqXgqPRupY5wx9sVETXOjcIyytIH0W6XTRxtl+I1qShpwj1qJB+rqswPB3PJES01gZ9JY1XR7dlj71Y8tsQjv8InOFWIesKgdzcRfcV+jEltL2GIj6CPwPuuUcDS7PDZJzfnwNnQsLGnwfFL8yB9gnzB481vdk0KFTWcwDCw6trxq1OiUh/5mX4OLpku7yU4Lz1+XRW1Tfxd8W/NuhVZmAghPRtW/0SXdqYUEL24sIyba+c0Y95+rtmfGyqo2KYOTKRNOwX8Tbdr+1tRkvQDDY1o9ahfkFwuTYsE9E1ahFP0vL0ynyzK13bUxd87iba4x8s80LZiufauMX6fLdaGVolb1oS4bORSk/Qi4gXu6RltUGRb0jQXTVi8KdTzd3ZIHrkJT7zMQX4cCc39LUzX9y28joQ1h9JPV3eZr9++8q2C27hg9lf2BUpQFPluzwSxLCrXl34rSDqankAfcVyVRUcpX1AD2eTqHgl2DbBhKRrTc6SgpFfX2UM2cqQ5TwdiaETdgYUB5CQwsqIojntf//HsxHVPWQ60 5T9EsjK/ HT18h6f1ytjDj6nGagqsH4eqK0UZ8nEToBvOodEHy5S4KhxzaVOdGKAtVIh8ctsAQzAFg2/ZpYdNTzmkUhfL+vwvKdtqoOM1UqTLq617wrP4jQBonHN7Jae92C298Hz9jWXGWLhu1IG7CHYli0mp06b/45j3UTcY12WfVNYYtPcUV4TPsNnoUGl3Th5ZgPOFpwESsvdMceKTftQYQXpJJbTCsQWnmtKnT3C8enZUvrF+F0jO300+bs+MgL7jQ3G7BpN54g1OY3hwFQSl6FEMOItRIGndv0Qa/tweum/J6Y/qXqYuLIw5VsyigvUJl06sMIm9liZJD14iCkrgtTN9WSWNn11FypU2awh7AO80OdmEE9VqfMnC6jf8o9ujgUa8EbEsyEuBX3ILQ//j9U31bpBS6lO3Gsu3tEGdBkTYHCN/ENl25T+ts22yLBuvIpErxCa2LsLiXI06EIv0/Py31w4lbOLaFM0Ph3a2BNdUSKjR78+znm3hqWgzpO/fnKg8oJ9Kta+6Lnge/qTsEdGTq8NAwhGA2D89o4EFu9YCSl+0Jb9ayYaWMQaLbJ6DXGVoWsN5vTzyKH81sHfkXPf8fccvQZ70jBFkYkegcG5Pn9y4kZ/KYMKIK3roPzabkr0RtdWJ2iQVI+3TfsBmUpr/95ivCwS4wtHo+zuiiKWYjugvJcv0cGqdg+b6zTZLvqo3ObjFDkHUnqWhgCYQ= 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: `copy_to_kernel_nofault()` is an internal helper which should not be visible to loadable modules – exporting it would give exploit code a cheap oracle to probe kernel addresses. Instead, keep the helper un-exported and compile the kunit case that exercises it only when `mm/kasan/kasan_test.o` is linked into vmlinux. Fixes: ca79a00bb9a8 ("kasan: migrate copy_user_test to kunit") Suggested-by: Christoph Hellwig Suggested-by: Marco Elver Reviewed-by: Andrey Konovalov Signed-off-by: Sabyrzhan Tasbolatov --- Changes v2: - add a brief comment to `#ifndef MODULE` --- mm/kasan/kasan_test_c.c | 8 ++++++++ mm/maccess.c | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mm/kasan/kasan_test_c.c b/mm/kasan/kasan_test_c.c index 5f922dd38ffa..2aa12dfa427a 100644 --- a/mm/kasan/kasan_test_c.c +++ b/mm/kasan/kasan_test_c.c @@ -1977,6 +1977,11 @@ static void rust_uaf(struct kunit *test) KUNIT_EXPECT_KASAN_FAIL(test, kasan_test_rust_uaf()); } +/* + * copy_to_kernel_nofault() is an internal helper available when + * kasan_test is built-in, so it must not be visible to loadable modules. + */ +#ifndef MODULE static void copy_to_kernel_nofault_oob(struct kunit *test) { char *ptr; @@ -2011,6 +2016,7 @@ static void copy_to_kernel_nofault_oob(struct kunit *test) kfree(ptr); } +#endif /* !MODULE */ static void copy_user_test_oob(struct kunit *test) { @@ -2131,7 +2137,9 @@ static struct kunit_case kasan_kunit_test_cases[] = { KUNIT_CASE(match_all_not_assigned), KUNIT_CASE(match_all_ptr_tag), KUNIT_CASE(match_all_mem_tag), +#ifndef MODULE KUNIT_CASE(copy_to_kernel_nofault_oob), +#endif KUNIT_CASE(rust_uaf), KUNIT_CASE(copy_user_test_oob), {} diff --git a/mm/maccess.c b/mm/maccess.c index 831b4dd7296c..486559d68858 100644 --- a/mm/maccess.c +++ b/mm/maccess.c @@ -82,7 +82,6 @@ long copy_to_kernel_nofault(void *dst, const void *src, size_t size) pagefault_enable(); return -EFAULT; } -EXPORT_SYMBOL_GPL(copy_to_kernel_nofault); long strncpy_from_kernel_nofault(char *dst, const void *unsafe_addr, long count) { -- 2.34.1