From patchwork Tue Oct 22 01:57:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Holland X-Patchwork-Id: 13844966 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 DEA1BD17157 for ; Tue, 22 Oct 2024 01:59:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6B8746B009C; Mon, 21 Oct 2024 21:59:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6417C6B009E; Mon, 21 Oct 2024 21:59:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 386AD6B00A0; Mon, 21 Oct 2024 21:59:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 4D79E6B009C for ; Mon, 21 Oct 2024 21:59:26 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id D34AEA1C27 for ; Tue, 22 Oct 2024 01:58:55 +0000 (UTC) X-FDA: 82699580628.12.92FE6E2 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf11.hostedemail.com (Postfix) with ESMTP id 48C7340005 for ; Tue, 22 Oct 2024 01:59:04 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=sifive.com header.s=google header.b="aoNV/hFk"; dmarc=pass (policy=reject) header.from=sifive.com; spf=pass (imf11.hostedemail.com: domain of samuel.holland@sifive.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=samuel.holland@sifive.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729562252; a=rsa-sha256; cv=none; b=T5B9of0TDQXMqmS3CpbxADKBBPpz8P8BAHFUnAI3r8MTh1HbR/Z5Iff1/zD8IENyxLhgPi nzmmRS1NGQqg3g7Qkqs2l1V2JC+2uxevjDVU6xie59MnG5pe0M5/fL4E9remo36yChdQR7 P6bz4erHhEF2T6hU7+zraMvzFtDg5RA= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=sifive.com header.s=google header.b="aoNV/hFk"; dmarc=pass (policy=reject) header.from=sifive.com; spf=pass (imf11.hostedemail.com: domain of samuel.holland@sifive.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=samuel.holland@sifive.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729562252; 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=9FnCjcC1/gsDOd6L8rx/6dcUkVYp18eK0+PNRkpMvb8=; b=4lOgkuIPvniIy/vBKU8ON/aTlncKOuyJDWitQXWs4sDmQJoALj2WKyHeoMbcPxNtgKqTt6 kOHVYkeX3ZApJdx8bGRZd8F+eJnuIRR0sDA683A1IHAUxaTh38+qSvcr2toXNP45A1ifbv APau1G7dB1wvaq6qfPHvK13yDvJxXVA= Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-71e585ef0b3so3904963b3a.1 for ; Mon, 21 Oct 2024 18:59:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1729562362; x=1730167162; 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=9FnCjcC1/gsDOd6L8rx/6dcUkVYp18eK0+PNRkpMvb8=; b=aoNV/hFk3y3wieCcfeQzx3NPuwEwoHu8pGWlC4WNaLP3VOuwqJbSd7ff0J6vKPu0k0 Fxgjma2uwJGzIVIkvhuls/OhtxhaF2f1WXOmZnh9pqCVeW2MC2N3qd6Lby5hrYr2y4+o b4flp+qV00Xdtou9h51njr6umZA5BHKi8RlvGRIzKU0kTSJvR9PfTzOyk9riKfmaEQDb e6nS34H5eyikhIPdfwBF8FZM1iXiDxbe1QcyoKkG9cFphPVVkU+L3suOiWUzWPB5hQj/ TkWcII9bS5NzOx6ToFj8cl0FkxhTpBhSB4sTF+c0ATbBmLKDNGrzfjQvehEW7JJmXTku T6Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729562362; x=1730167162; 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=9FnCjcC1/gsDOd6L8rx/6dcUkVYp18eK0+PNRkpMvb8=; b=Zk31erykXP/r5YacnTCyFQMuWB1huWxZBS4XgL1smdZj5MKcqaJl+uNV3Gylod4j4Z jzeJDOFYHYloyA2pfyB6jfIduSoDhZJRO+cvn1pmyyLLhLAtlZjB7btDCxPq4gmwSxfi eXoFPn532NYW1IGSgwaC1COMwTnJ3YQFwtVmRr567y56FMdPmoHi8aaoY6doSh3zigVs TUyuNGzseb+8pjAVUy4IfN9e3TeX4RHs2wrp/T5nHXIHlwPfec9rMCh56jzhq1jEHwUd sPFvtiinUZAXWw6mWTdLnOQsP8BiTRmDJhdd6mngOGvTmI2bISNdbxKjsfRNBCauxeS8 bytw== X-Forwarded-Encrypted: i=1; AJvYcCUiluiBgiIJXxYu5se36eu5GbBN+5adE92w7kmM51G6XlFegpn6TsqOWQIREMY1CjX4ZJpymvDqYA==@kvack.org X-Gm-Message-State: AOJu0Yz8d/KULEM0GyV7KZdsW50Uul9BeLE2Q1GZt7eXrrmH71FUGCWO u/VbdAU1wEawA3KTKY3c7KWkOQ1WoNmwU6koQXGVI7Et23qlwQuXKKaEKfiQZNs= X-Google-Smtp-Source: AGHT+IFrGG6oMYUOck7CBYXToXMnxG+Lx4oLmbcg4j3FeL+zQkCHcoYgP+J0xW6HIU5j3POtBJfPHg== X-Received: by 2002:a05:6a20:43a4:b0:1cc:9f25:54d4 with SMTP id adf61e73a8af0-1d96df0ed05mr1060384637.38.1729562361689; Mon, 21 Oct 2024 18:59:21 -0700 (PDT) Received: from sw06.internal.sifive.com ([4.53.31.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71ec132ffdcsm3600710b3a.46.2024.10.21.18.59.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Oct 2024 18:59:21 -0700 (PDT) From: Samuel Holland To: Palmer Dabbelt , linux-riscv@lists.infradead.org, Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , kasan-dev@googlegroups.com Cc: llvm@lists.linux.dev, Catalin Marinas , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Alexandre Ghiti , Will Deacon , Evgenii Stepanov , Andrew Morton , linux-arm-kernel@lists.infradead.org, Samuel Holland Subject: [PATCH v2 3/9] kasan: sw_tags: Support outline stack tag generation Date: Mon, 21 Oct 2024 18:57:11 -0700 Message-ID: <20241022015913.3524425-4-samuel.holland@sifive.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20241022015913.3524425-1-samuel.holland@sifive.com> References: <20241022015913.3524425-1-samuel.holland@sifive.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 48C7340005 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 9fiyihcsw3kzzsx5q9bx6qm497ptkjmt X-HE-Tag: 1729562344-427978 X-HE-Meta: U2FsdGVkX1/x4/AfzAK6RPhiX8Gap9was5X25qBywG0jIq1/EBsrH23RxlQYV4F20s3aKGnxzmMOhVQlfLP0VzS/N1IOz3aXR9VH5201DzEbv/JWyRlIEGm2N3OAKlCqCKq13aJLfFoNzXKXtTVYX0eg8QjEl24f63jbn1iSjZf5FMgyO9/yLozBp9aGv2ok9B4zlBUZ5eXMgTEmwaC0MIXM05GMCyaFEunuDzb4c0GaDeiMGXtlyD86WDvPAfK055Ch5dXFiq6S39UBIIoKi67MBIIIGEDKIrlX0uK54Sce2WXHsfeL3H7lKebBbfveyhVoE9O4I89/DSLJ04u39CIkwJKIB0XZgx+1+7G9XqlmSrrDE+KWjmyiWHA9TqFdXExj5ReuWwaSi7R8HGYlpAlBBteze0u+Cpqfl69R7LG1d1NkB7CRrC4D/JZ40xiggL8/blsN+qaL9egglZzShHKFTxBrxf8BP/yMu0H1RX+4P+KxfVyLNnRJUvQF9RDuetdQgW1usMlF8CS+cpETVMCTPdw5saJEIyNKEvch/8J3uf6w2jY/j7hgFzEA/Wr/jw6LHrE3jgJButusRMfxQfdaBbEhT0uw2mClENkp+WKb+gZmsSs2OYNYYY+NZyrZnULUm4uTfcIw6ICag4D4HaRJgRzXohtSlHsQVS1Aq4yGmyfuCqUq8CTBdzggIQKR1iCVsXWXhjrC7G7NgREtf+RvrYbx4O+JRgINrEfTPNeSwnOZT9DAvBRzzLIidq6fHqh/hwCOs8ZDKkfhNKpELeqrfogVoZB2xbb8aOCHXTtWjouxPGi+LJDmaQ3l+qzK8d7QBjeIWmx0RBojv3RQfHxZIrZsL4aTWQ8h8nCrB+eSiWt5pAkzp8BYWXc69h8AHpnsLSwwVeZEMTWCcyqObmRPpF2AhSGa4HKwGuWyAx9q0QeszJTxO2XkXIsHjRRhtZK/7c4qUrkaWWVYT46 nXTyuES0 J2OTlP2MMubgVPZ+RPnax47fJPqQL/eDWv6f1GjHb0U1NEe7aiLWsyUgaKUf7zDltqGjTxmHRzIDSZm5O+s2vQSJztExHS0bwXlGPC/Wt+c00av2T90qlinFrwF/HKFEX8Vi78egjWpoHb0Tmib/hWnLpP92VN8Xxk4hZPkR2dVZOr0jNjd5BpcMS3ilkzfAAdkOEJBuaMJVn/ohHmzTMfqrVAD/awtovltslBD7lmCE6kRCHBBL21lVgVYLeDKDlMfXCrCNfVcM6dEC0aUk2AVqRESeOiJduBVAOISEuAc6AWvG9Xq8lxquDgUfWraIrciwroMLvGjaUQ7Xd7A9LLvKsYXiIc1X6NyxMglpy74BaKtrTQVyAHwyyFwzN+nGvKIxbLWen9MBx/4c+LoFlG1K2izwPgmvtKCoVVcDG/TADtvxjmsnrcv9VW4pJN9nfhqxJ 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: This allows stack tagging to be disabled at runtime by tagging all stack objects with the match-all tag. This is necessary on RISC-V, where a kernel with KASAN_SW_TAGS enabled is expected to boot on hardware without pointer masking support. Signed-off-by: Samuel Holland --- Changes in v2: - Split the generic and RISC-V parts of stack tag generation control to avoid breaking bisectability mm/kasan/kasan.h | 2 ++ mm/kasan/sw_tags.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index f438a6cdc964..72da5ddcceaa 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -636,6 +636,8 @@ void *__asan_memset(void *addr, int c, ssize_t len); void *__asan_memmove(void *dest, const void *src, ssize_t len); void *__asan_memcpy(void *dest, const void *src, ssize_t len); +u8 __hwasan_generate_tag(void); + void __hwasan_load1_noabort(void *); void __hwasan_store1_noabort(void *); void __hwasan_load2_noabort(void *); diff --git a/mm/kasan/sw_tags.c b/mm/kasan/sw_tags.c index 220b5d4c6876..32435d33583a 100644 --- a/mm/kasan/sw_tags.c +++ b/mm/kasan/sw_tags.c @@ -70,6 +70,15 @@ u8 kasan_random_tag(void) return (u8)(state % (KASAN_TAG_MAX + 1)); } +u8 __hwasan_generate_tag(void) +{ + if (!kasan_enabled()) + return KASAN_TAG_KERNEL; + + return kasan_random_tag(); +} +EXPORT_SYMBOL(__hwasan_generate_tag); + bool kasan_check_range(const void *addr, size_t size, bool write, unsigned long ret_ip) {