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 6F008C54E58 for ; Thu, 21 Mar 2024 12:31:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E58436B008C; Thu, 21 Mar 2024 08:31:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E08136B0092; Thu, 21 Mar 2024 08:31:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CD0276B0093; Thu, 21 Mar 2024 08:31:21 -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 B9C926B008C for ; Thu, 21 Mar 2024 08:31:21 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 4FE0F1C1827 for ; Thu, 21 Mar 2024 12:31:21 +0000 (UTC) X-FDA: 81920981562.28.6E1C405 Received: from mail-vk1-f175.google.com (mail-vk1-f175.google.com [209.85.221.175]) by imf13.hostedemail.com (Postfix) with ESMTP id A8BBC20035 for ; Thu, 21 Mar 2024 12:31:19 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=MDX+Hiwi; spf=pass (imf13.hostedemail.com: domain of elver@google.com designates 209.85.221.175 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711024279; a=rsa-sha256; cv=none; b=gWb7BRQxVdgoXgCQK0+xzHD7WgZ7gzVCCct0gZUu4i3Pl6hovfiGFmPJqx1PvV6DWigXut q+X70DpS3iuzSO9KjMzdkQbISiI+c1UxjD8HQ6biYP/Ao7IK3PzosYLQVmKklca6KeTK3q kmqg7+6P+Clffltl9AfUjBGMh5W19lY= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=MDX+Hiwi; spf=pass (imf13.hostedemail.com: domain of elver@google.com designates 209.85.221.175 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=1711024279; 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=B4nWxDL2LITioaRby7yvh7M2SRX3O9JMXDxwR9Igm8M=; b=zbTw/esOCamNKDEs2tM7fnRCWIK4L3Us6ZRagkYkSXMDd6h7AAa9HM2mM1FFqgM5RzUkKR 0aKeCdfec2HB0BKCKL/XRhzTgEvadrzdGyJ9cM7RCFJaZ4YMAaztwRoC64GRwjZcCjvxIO +taivaxmowLzgcvnILrvsEHKU4UGBXU= Received: by mail-vk1-f175.google.com with SMTP id 71dfb90a1353d-4d4404fbdf5so411240e0c.0 for ; Thu, 21 Mar 2024 05:31:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1711024279; x=1711629079; 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=B4nWxDL2LITioaRby7yvh7M2SRX3O9JMXDxwR9Igm8M=; b=MDX+HiwiOLZzz+8lc+WOt4Bi3CWfoZ7YqhWO+XQuFMkCig5U+PE7Bm/1I9Sb2lUc22 3hH/6lD3zF4u7N7tqR8rPsS0kBAkG6nfkgNAqGUVeUBkRBgXvNthlFj0ByrvsiBEnpAm 04bMIlDQ5yrAEau4RWKVZ+EChHhEFn4RIhShyEKg4FmIzVIeJ16wVuVsAJo7Qk6EBGb4 rnLlHNkK1Q0QSRArh4Kwt1i1ieIOnHLS3WfRFbL3HxxaCs0KzmlL2dnlLuN5WjbAor5z eC1poJBvthKtJxWYVq3/uAStIoYFinOIa5XRsK9og6DVsPX5DlO0B4Q3ruhAbS+nxWdN LMGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711024279; x=1711629079; 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=B4nWxDL2LITioaRby7yvh7M2SRX3O9JMXDxwR9Igm8M=; b=qPfaWsyrh1Iu+A2chetBPoaLabkdZv99I5KNT48bKnE686AAuZ8ZmPyFUPU/AScac5 olyHTFD77xOGgHJ9fM6HOeAVHebRG7H1eA3d6ju6C/mU67BVUy68bljm0b9ZciDVM4hm s3u76JCAU9l5LMhCCUF20ztTHOQ70QlmSyHSglOp5EFtxgChHjI/QvwPFG1iGcXvRwzs hVmhdCGaipVvXcZH39QU1FaEDITJB8kJ/uDrN+1ITDklYiH5N28D2SRqzJW6Zz9t4F36 HodHIaw8xBzwJYLS653pGW44lcl2e+tLQTCD/kcU5rJYYFfsunNp8VhuUBzzkY9xctU6 BNww== X-Forwarded-Encrypted: i=1; AJvYcCWtKovnOEhzIEaK9k5/RjgL84Hc0MgF7zc+3Y3NASzN/d6XvAgBySH82Z68O6MqY2TDVHHG6Aohkhu40wQ3XhFJ3sM= X-Gm-Message-State: AOJu0YxtCIas4gth+oN3cJ5wQ4cakW3RShiQIZQTLDEIq4jlazXxVdbn SYyJc/nQdE2FK5htS7U8Ejkjkrps43ivyulh2LQSysiVUV8lTFoLMYmRqQ5FeoNa7sXPwuoUqy+ TByuuknDbU7voqwsHQn3keKanSPdvgvb+easN X-Google-Smtp-Source: AGHT+IHGrB6CuyBs53WYzdX+XII3yZ/LVaQAkjkHQL8Oy5rSxBEdZcjAaQ131inYEQj+EUaVDhZew04yYPkWm/wJHTM= X-Received: by 2002:a05:6122:c85:b0:4c9:f704:38c with SMTP id ba5-20020a0561220c8500b004c9f704038cmr19496827vkb.11.1711024278613; Thu, 21 Mar 2024 05:31:18 -0700 (PDT) MIME-Version: 1.0 References: <20240320101851.2589698-1-glider@google.com> <20240320101851.2589698-3-glider@google.com> In-Reply-To: <20240320101851.2589698-3-glider@google.com> From: Marco Elver Date: Thu, 21 Mar 2024 13:30:42 +0100 Message-ID: Subject: Re: [PATCH v2 3/3] x86: call instrumentation hooks from copy_mc.c 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, Linus Torvalds , Dmitry Vyukov , Tetsuo Handa Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: A8BBC20035 X-Stat-Signature: jqpsygujobirhwme156c8uxjgt5hxpdi X-Rspam-User: X-HE-Tag: 1711024279-864379 X-HE-Meta: U2FsdGVkX18N4X94RjY/oOPIe4pJ1sfzxm80Wo8h8xMxLOwcO5iSgN5FNUUSwexNDNcdJX/OYuEllMT8wAixqv7+tPtOJQ8ouNVXQ0bDHdRqEuCbn2ShG7BbNeUwIPpDI4hb9Zvip4Ju2WKsRkMNQ2LPfZVM/o5Oq7ButAlbD3t/2YEloBfHpx4j8FnMkGmemInrCD+WuBVLaeqbxF+ZP6KoamBU9cjyCP17YfIySEVRmhfEnZ+LPvFWAk2Sk/JnOjFLYsbVr6kqBz4TxWosNMPcDzY+XLa9I1TSbxyq6SYjjdSwSFhgfaW/N2FHHs9MljYpf5gzLFXocpi1OrdLfAJWownULWhW0aqccPED/G6/gvxT5ssms/z73lW/4jJSlJRRX3JSqkRL/C/LtL7g6yMVKxBHKbC9CLaEYBYD/eWnA59CxolKw56OTPwQ1Jmh1HDRT4MVhCoSrsF4ob4LAzCwyqBsX25P2lfzqxn0vgmxYHkqp40lGYxp72Be9Pwj1784Oh8RZberB1TK98WoKeVlsFMG+9hYn9B4mlEtHTPBXz6k4haSbykviu7lvej4i1nw5jL7zBaQYfgn9h5HsRm6onhHy5wCUDn48klRLIy5f7U1siS+DzBTeu3GF47mIJJ5tJlsYDm3xzguuO8NIyhZ8C/4uSwUZfYBtJ4UYeytTRs1Hf04bhZN/pZmpVLtGa1AYOz0BPHXsYl4b+0k8Y6jKSaeq9rZ1FC1kiA+7lMLxcmbMRYQupTVcT+u1IjmX7qCCG/Nv7D/OWIWWCzlRea58xnayvamuQja52rZLNEdGHlww1hLoHRg+VFlt8w6V0c9Az3JJ34w1owfQMe9do/m2mPaeRc6R2xOB2Wyp8ho1upFvwBQt2vCv4igQi9PjRCHVb3WklJK/NRGG2hfinEifTlEn06ytHIfJSyZ9XrPnNM2sZ2t4H9dce7vpQyfsnuSZnxrKaCohGxduyX I3gNNqGF hC1ifdGcd7PyuxrN1k5UtBlv7M8Nwg07VM0WEwHht84Eq69g= 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:19, Alexander Potapenko wrote: > > Memory accesses in copy_mc_to_kernel() and copy_mc_to_user() are performed > by assembly routines and are invisible to KASAN, KCSAN, and KMSAN. > Add hooks from instrumentation.h to tell the tools these functions have > memcpy/copy_from_user semantics. > > The call to copy_mc_fragile() in copy_mc_fragile_handle_tail() is left > intact, because the latter is only called from the assembly implementation > of copy_mc_fragile(), so the memory accesses in it are covered by the > instrumentation in copy_mc_to_kernel() and copy_mc_to_user(). > > Link: https://lore.kernel.org/all/3b7dbd88-0861-4638-b2d2-911c97a4cadf@I-love.SAKURA.ne.jp/ > Suggested-by: Linus Torvalds > Signed-off-by: Alexander Potapenko > Cc: Dmitry Vyukov > Cc: Marco Elver > Cc: Tetsuo Handa Reviewed-by: Marco Elver > --- > v2: > - as requested by Linus Torvalds, move the instrumentation outside the > uaccess section > --- > arch/x86/lib/copy_mc.c | 21 +++++++++++++++++---- > 1 file changed, 17 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/lib/copy_mc.c b/arch/x86/lib/copy_mc.c > index 6e8b7e600def5..97e88e58567bf 100644 > --- a/arch/x86/lib/copy_mc.c > +++ b/arch/x86/lib/copy_mc.c > @@ -4,6 +4,7 @@ > #include > #include > #include > +#include > #include > #include > > @@ -61,10 +62,20 @@ unsigned long copy_mc_enhanced_fast_string(void *dst, const void *src, unsigned > */ > unsigned long __must_check copy_mc_to_kernel(void *dst, const void *src, unsigned len) > { > - if (copy_mc_fragile_enabled) > - return copy_mc_fragile(dst, src, len); > - if (static_cpu_has(X86_FEATURE_ERMS)) > - return copy_mc_enhanced_fast_string(dst, src, len); > + unsigned long ret; > + > + if (copy_mc_fragile_enabled) { > + instrument_memcpy_before(dst, src, len); > + ret = copy_mc_fragile(dst, src, len); > + instrument_memcpy_after(dst, src, len, ret); > + return ret; > + } > + if (static_cpu_has(X86_FEATURE_ERMS)) { > + instrument_memcpy_before(dst, src, len); > + ret = copy_mc_enhanced_fast_string(dst, src, len); > + instrument_memcpy_after(dst, src, len, ret); > + return ret; > + } > memcpy(dst, src, len); > return 0; > } > @@ -75,6 +86,7 @@ unsigned long __must_check copy_mc_to_user(void __user *dst, const void *src, un > unsigned long ret; > > if (copy_mc_fragile_enabled) { > + instrument_copy_to_user(dst, src, len); > __uaccess_begin(); > ret = copy_mc_fragile((__force void *)dst, src, len); > __uaccess_end(); > @@ -82,6 +94,7 @@ unsigned long __must_check copy_mc_to_user(void __user *dst, const void *src, un > } > > if (static_cpu_has(X86_FEATURE_ERMS)) { > + instrument_copy_to_user(dst, src, len); > __uaccess_begin(); > ret = copy_mc_enhanced_fast_string((__force void *)dst, src, len); > __uaccess_end(); > -- > 2.44.0.291.gc1ea87d7ee-goog >