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 8C9A9C54E58 for ; Thu, 21 Mar 2024 12:22:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1AC466B0085; Thu, 21 Mar 2024 08:22:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 15C5E6B0088; Thu, 21 Mar 2024 08:22:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 023EF6B0089; Thu, 21 Mar 2024 08:22:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E616D6B0085 for ; Thu, 21 Mar 2024 08:22:29 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id A9673A0607 for ; Thu, 21 Mar 2024 12:22:29 +0000 (UTC) X-FDA: 81920959218.12.79454B8 Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) by imf11.hostedemail.com (Postfix) with ESMTP id D39494000E for ; Thu, 21 Mar 2024 12:22:27 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=lz0CyLQW; spf=pass (imf11.hostedemail.com: domain of elver@google.com designates 209.85.221.177 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711023747; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BJtjyUU93UByaqE7DctDE27rbESuDSaozbO+roW89C8=; b=01LttZQKuu0iyWSoCVONta70ytAafE5W8mTFsKmZd2O4+nLGjB2F0VD3SBJfk4905qdpJa 2JiMDFxMKAxtUXcWvFmCOxi4VhFltu5ULtuN/Irg3vCLBKhVmFcdun2OsIlJIguSgzrqu4 /Ao/r0HB2wiaoKArRFOVr0f4SGIAet8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711023747; a=rsa-sha256; cv=none; b=3W6hOOQtwSKkr9qMkoLOZtRFwsyEsYSHpPY/MpbiZg7J+25gF0mvlVSZUUBtRUoxp0CB6E tcBKBy3uS34VuixRwelIebgjesweZX6+Y0kc1VJENjsNwj9ooiMyxfzcjNF3CGlHFNuT2w 4xKKReLTMj4KvralxyrWFmdvWoKsljI= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=lz0CyLQW; spf=pass (imf11.hostedemail.com: domain of elver@google.com designates 209.85.221.177 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-vk1-f177.google.com with SMTP id 71dfb90a1353d-4d42ea640f0so346089e0c.3 for ; Thu, 21 Mar 2024 05:22:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1711023747; x=1711628547; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=BJtjyUU93UByaqE7DctDE27rbESuDSaozbO+roW89C8=; b=lz0CyLQWVwY9WTKFV2nISI3goZLFSk0vJpOMaBWM6I1CdTfNEjMg4aC4moIw/HG+wf cASrvvIyVJtoGDBs8PkQyrV695NMDBKbhNcO0wxz5fymMYc4Hg6An95aZ+mWuTzhLdr7 UXPIYVtDYt+lz7AMHvKL3rGUAHo67kEwnpd+P5wRC+2D6CepBx44qf7mr9mwzuiVvOCe hX+XJcwURq1HqJeY2Kn7+glSqvAL2lnCJzM20v1PDH+Mq4x8Io0biGGgQWxl3NgF6RY4 JgMBcLJZcVN0au4YfErmdbEUA6LF2+flqVSy/k4VyssjjDs35S/Xie2icxeBO6qTxcae gb5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711023747; x=1711628547; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=BJtjyUU93UByaqE7DctDE27rbESuDSaozbO+roW89C8=; b=wOetPCc9zlsoiYnomv97Oe36f/+r/IWcfsnwW6Z79FakAGjpLiZ1HCiY3H7A7Dd7HH /pPSE2KG7subB0uwHABio3Zyoy/l2b4RZEuaQEKMOPIsj3e9+eg39q+dHB6k+P29AuN3 Zzi4KbiGoaEq+vthSiucKCa3Cl9qUQQvABhqykQ0vRqzk15wqyV6iAHymNKhMPEOzt3p iQc9aUiTIhjtY88QCxcp5uY5noETk3hzDQEOYsKTseGKKKWKvNjW1A96A9qlyq2C0iSy eGukpwLhzEEgLNZkRXgHrDqO7EKG5U2qVF+f+/hf9aslKqxxQtUWLyVKP0X/gaSdaZkr GR4Q== X-Forwarded-Encrypted: i=1; AJvYcCVB6ceRBO1Y7QyQIOfZtTvHc0FJHK9z//gac85BSw7aOlNkiA3xrtEo9aBEfWsJcQyh2M6MHwb9agKvfGRGlNFP8DE= X-Gm-Message-State: AOJu0Yy6IzgA5pJM5aWziIrlaOAce968Dj+WnlHKTmGsh6kC00hnrahC CBf1E9wK8COMnaBN04iOK6qYfgJ74f2rgKQHoqjXuLbFrKuFfPzzwTLtUNv/CCO+9ChZeC9eCW+ F1j6YOjTEf3nMYv+xqlVAX8IYNSeyK0goCaan X-Google-Smtp-Source: AGHT+IH2D8QrIZ0C+AbDylyT5s9WD+GesvP+2mcUDbCJiXNIQ/C51SuKQRl9uBoE041q1vP3W14+xs9e5cGFhMUCtaU= X-Received: by 2002:a05:6122:3659:b0:4c0:2d32:612f with SMTP id dv25-20020a056122365900b004c02d32612fmr5775412vkb.15.1711023746707; Thu, 21 Mar 2024 05:22:26 -0700 (PDT) MIME-Version: 1.0 References: <20240320101851.2589698-1-glider@google.com> In-Reply-To: <20240320101851.2589698-1-glider@google.com> From: Marco Elver Date: Thu, 21 Mar 2024 13:21:48 +0100 Message-ID: Subject: Re: [PATCH v2 1/3] mm: kmsan: implement kmsan_memmove() To: Alexander Potapenko Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, kasan-dev@googlegroups.com, tglx@linutronix.de, x86@kernel.org, Tetsuo Handa , Dmitry Vyukov , Linus Torvalds Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: w33j9wc6nw7sbc3sziswnjzdafs396zn X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: D39494000E X-Rspam-User: X-HE-Tag: 1711023747-597567 X-HE-Meta: U2FsdGVkX196hxCfqWu8T1TUhoxGL5K5vipTd5wLaSaEc0pXsQxTFWgIbQxMmS7T9YTrlL4lkoHAnqVel58iOBoUVpn9WElNDkzg4EWwFtgNt7eomX0yiNuPC7jcEZADOyvc3Th6h54Gipsm2eiMPy6JSu2JVQd0AnBqhCLVVwYQlRE2Wum2aHqTVR+x4WnMTC0x4UYoThQ7/ykaIjT/xJRe3/0KwJaX5kFyqHTtLYQjeJ3/2WwVd1xnyZCxmiGQwyf8+hUqXXu1kHySaYjPCy33kS5tUtHBEu8H9Il919Fs7UZ+rQ0PmMAo1b4HeLZqHYnMKkMyfvN7ncyQNU7qip3Hcihj81JcdSL9j8x1zrCfTC7y6sCaNKfvX40H5LliWuE90Yj1vCrYT1LPOL5oEzxQiA6Y6BBE62JYn050HGBXS3/e2QtVN5KvBPOqIfoWWkPV/25BBO1NI/tNO+BdndQ3U+DkPBCXlI3+oY+FlJ8ostXOjHwbyMXDOGWIAUYvmSn6c8KUnmPeKJQw//7R7OAy8RVhlRRSJFimnBrBCFRSq+bAqQ22Z4IaH3AFG41UKcmEZUpgzfcBNbGTb+tGlj4F7daILYh8fUTU7rvMygyY6XdEhOp9u3/dLXCpo+kB9et6ItgK2CxQSuP1mFMPiTKkViiMf6gfL3jThLwv33RHtVvR54GOmOf+RbaEUh0eqotlIcDF2VCtvUfk592Wh5qnb9DFD3udiCRl6casESHt4QoZXE9utwJOVAwNifuTV0XD9xsKn2/99LfNrxaK7IzrrMICoi3xhSqkPgHJ+Q+ev5XU24Xy6Vm0iMoYSC+m8TcWOgto+eNFXNkYFtwkHdEOqGlrYbGpC9+gKtTf1BRlRHPZMUQBzaqQApieePj9XvE4XpWPSkm7qYdOThOx2SQgheVDrpEcrmSYgaUbPMhKnZJ6WcDM/+SfPvLwbSqqgQ7VnvHTBxXwgrQRudT j++t8bu1 JD5YWTnCE5OcJ0IxpJDaqYM724mEhvjIrJUlYv1GUBSiTqVaTs5Y7hcD2h058oDmaeAlnuTPR8LG/4KJoEIOZMCCbAJb6a/kloRF1kzMiH5hkejJPLO6APhIG6Q90FlS4TzzHYKhFZWcKOr2giVKFIn5Rno2l5Ume4YlSGvrym8SRW2mwNw+0ewd/HHium3tKs1LWqlZCS7/WjTDA8MQquPVlWz21V438iRogGDgiq1MsrTyAGVQKprGky3Oa9B1e+LPzePcQVKSYfMcnziWUL7df06bmW7RU3aQD1pKS9WCFuVR7mmFTdyXaqHfkP2gkjuBwHqR/e3JLZGjGNXeVakWq977oIZFr1CSG41Y+I8vHvGbO+a0SVn0GB4zzKQluGzUSc3zMpgP+tegV8S4jsolJ718/azyH0w1Q 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: On Wed, 20 Mar 2024 at 11:18, Alexander Potapenko wrote: > > Provide a hook that can be used by custom memcpy implementations to tell > KMSAN that the metadata needs to be copied. Without that, false positive > reports are possible in the cases where KMSAN fails to intercept memory > initialization. > > Link: https://lore.kernel.org/all/3b7dbd88-0861-4638-b2d2-911c97a4cadf@I-love.SAKURA.ne.jp/ > Suggested-by: Tetsuo Handa > Signed-off-by: Alexander Potapenko > Cc: Dmitry Vyukov > Cc: Marco Elver > Cc: Linus Torvalds Reviewed-by: Marco Elver > --- > include/linux/kmsan-checks.h | 15 +++++++++++++++ > mm/kmsan/hooks.c | 11 +++++++++++ > 2 files changed, 26 insertions(+) > > diff --git a/include/linux/kmsan-checks.h b/include/linux/kmsan-checks.h > index c4cae333deec5..e1082dc40abc2 100644 > --- a/include/linux/kmsan-checks.h > +++ b/include/linux/kmsan-checks.h > @@ -61,6 +61,17 @@ void kmsan_check_memory(const void *address, size_t size); > void kmsan_copy_to_user(void __user *to, const void *from, size_t to_copy, > size_t left); > > +/** > + * kmsan_memmove() - Notify KMSAN about a data copy within kernel. > + * @to: destination address in the kernel. > + * @from: source address in the kernel. > + * @size: number of bytes to copy. > + * > + * Invoked after non-instrumented version (e.g. implemented using assembly > + * code) of memmove()/memcpy() is called, in order to copy KMSAN's metadata. > + */ > +void kmsan_memmove(void *to, const void *from, size_t to_copy); > + > #else > > static inline void kmsan_poison_memory(const void *address, size_t size, > @@ -78,6 +89,10 @@ static inline void kmsan_copy_to_user(void __user *to, const void *from, > { > } > > +static inline void kmsan_memmove(void *to, const void *from, size_t to_copy) > +{ > +} > + > #endif > > #endif /* _LINUX_KMSAN_CHECKS_H */ > diff --git a/mm/kmsan/hooks.c b/mm/kmsan/hooks.c > index 5d6e2dee5692a..364f778ee226d 100644 > --- a/mm/kmsan/hooks.c > +++ b/mm/kmsan/hooks.c > @@ -285,6 +285,17 @@ void kmsan_copy_to_user(void __user *to, const void *from, size_t to_copy, > } > EXPORT_SYMBOL(kmsan_copy_to_user); > > +void kmsan_memmove(void *to, const void *from, size_t size) > +{ > + if (!kmsan_enabled || kmsan_in_runtime()) > + return; > + > + kmsan_enter_runtime(); > + kmsan_internal_memmove_metadata(to, (void *)from, size); > + kmsan_leave_runtime(); > +} > +EXPORT_SYMBOL(kmsan_memmove); > + > /* Helper function to check an URB. */ > void kmsan_handle_urb(const struct urb *urb, bool is_out) > { > -- > 2.44.0.291.gc1ea87d7ee-goog >