Received: by 2002:a05:6512:2355:0:0:0:0 with SMTP id p21csp210765lfu; Wed, 30 Mar 2022 21:08:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy6MwIMnsFmOkbuQgWvF5H7vMd2DI6puFBtX/u/Dovktyc119l+2K9C4bZt9GgR8BipLfIh X-Received: by 2002:a17:90b:3851:b0:1c7:d26:2294 with SMTP id nl17-20020a17090b385100b001c70d262294mr3822675pjb.97.1648699681104; Wed, 30 Mar 2022 21:08:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648699681; cv=none; d=google.com; s=arc-20160816; b=LgSuIQOr7WGLND899sUYGIyxy5cPsnaeKCaAm9OLHqsLiJV3DStggEGHAB+4Unzgy5 am84Qk2589/Pap3iHnVbd9GG1iHxmxm6ctt19Whd5mP+fkKvCF89I3yQNpQoN6AnNz87 DHPjp13q+2bIfyWukRSv0jUgW7NVstKKtH5RK0ooqlqlnb9FE+qwT2JY8FPe5Txsgk6j hsQqnwYkPoVwDWq2/cQe076P8qD8HNoxlVYFKCuKn6osoU6SJ9eSbFYtsyOQNLv6Uauy 6oFvyc68kP0fu0fgwAhLVrnQG5lD5fN7sQZg4xrT7gxVmVgJ4q+Y6r0u+6LzxY+agBJL f/Wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=rrlsacueYKCfzaUaloBnav4G/jBuo1DGcsGefNV2qt0=; b=c0tnv5h3vhBdklBW80KS/wiARLwKuWFBvTTEc68Bwcp5lsky40mC8aztZwy1JnqME0 bQVDOhoyctIqtXPMLz3lTiOqJgFPNvby42NpqZJdHE27p6vHYD1ZIuc+RonGkkKTpIwa pVa/JyddUnUMXnmrsCPDWk5BC+hOwxFwBJeCtKooQ+t+32oT6wOv+Ml1/XqoEc/WGAZj E2XqJ2zBcNRvNpb/lw+LEylajUC2toF4mbyc2GyRxxYKPB9atTO28EpCFz0VOs7QxoHC WLUsQSAw6r+QBYHloufeHXI/XgvZcWQye/xs7rMyej992qL58dKdTRfCqIIcULnvWJEL ye7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=NfqWE2Z5; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id r2-20020a632042000000b003816043eef0si6284363pgm.229.2022.03.30.21.08.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Mar 2022 21:08:01 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=NfqWE2Z5; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 4C3A8194565; Wed, 30 Mar 2022 20:15:15 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244504AbiC3JBM (ORCPT + 99 others); Wed, 30 Mar 2022 05:01:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36294 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236683AbiC3JBL (ORCPT ); Wed, 30 Mar 2022 05:01:11 -0400 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B01D64EC; Wed, 30 Mar 2022 01:59:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=rrlsacueYKCfzaUaloBnav4G/jBuo1DGcsGefNV2qt0=; b=NfqWE2Z5UXlCJ89Ijz/iWnWo9f 7Da3DL2TfLBAAhz0L4j9t/f7uqaL+IiQaeEIBKdEKBomlnah3r91Y02aA5An7+SF33uJ/llUlS/wp 2TCIiM8ohNNfgVpnQTbc7WHgjBmEBTTb8IivVqTbtF4ubq6Kjo8rYKTdul2EwbKRXNhQpQ8jQJEu1 3ZMR4+zvlkP4jSwsfMyFFtwhcUS0N5V7wjXwinGW5Wsyc93PsIPuXq+gYMd7rhHvB6vI9i2WgBQ4c UzN4pKPL9neldfp/W3UyqyE26IMVDvE4qHSFrL3QJNVKznq1/gnPqBeycX437rFDztAtSNtvRkMVh mr0yGnPA==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=worktop.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nZU9s-0015Xh-Of; Wed, 30 Mar 2022 08:58:28 +0000 Received: by worktop.programming.kicks-ass.net (Postfix, from userid 1000) id 52200986215; Wed, 30 Mar 2022 10:58:26 +0200 (CEST) Date: Wed, 30 Mar 2022 10:58:26 +0200 From: Peter Zijlstra To: Alexander Potapenko Cc: Alexander Viro , Andrew Morton , Andrey Konovalov , Andy Lutomirski , Arnd Bergmann , Borislav Petkov , Christoph Hellwig , Christoph Lameter , David Rientjes , Dmitry Vyukov , Eric Dumazet , Greg Kroah-Hartman , Herbert Xu , Ilya Leoshkevich , Ingo Molnar , Jens Axboe , Joonsoo Kim , Kees Cook , Marco Elver , Mark Rutland , Matthew Wilcox , "Michael S. Tsirkin" , Pekka Enberg , Petr Mladek , Steven Rostedt , Thomas Gleixner , Vasily Gorbik , Vegard Nossum , Vlastimil Babka , linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, ryabinin.a.a@gmail.com Subject: Re: [PATCH v2 13/48] kmsan: add KMSAN runtime core Message-ID: <20220330085826.GI8939@worktop.programming.kicks-ass.net> References: <20220329124017.737571-1-glider@google.com> <20220329124017.737571-14-glider@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220329124017.737571-14-glider@google.com> X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 29, 2022 at 02:39:42PM +0200, Alexander Potapenko wrote: > +/* Handle llvm.memmove intrinsic. */ > +void *__msan_memmove(void *dst, const void *src, uintptr_t n) > +{ > + void *result; > + > + result = __memmove(dst, src, n); > + if (!n) > + /* Some people call memmove() with zero length. */ > + return result; > + if (!kmsan_enabled || kmsan_in_runtime()) > + return result; > + > + kmsan_internal_memmove_metadata(dst, (void *)src, n); > + > + return result; > +} > +EXPORT_SYMBOL(__msan_memmove); > + > +/* Handle llvm.memcpy intrinsic. */ > +void *__msan_memcpy(void *dst, const void *src, uintptr_t n) > +{ > + void *result; > + > + result = __memcpy(dst, src, n); > + if (!n) > + /* Some people call memcpy() with zero length. */ > + return result; > + > + if (!kmsan_enabled || kmsan_in_runtime()) > + return result; > + > + /* Using memmove instead of memcpy doesn't affect correctness. */ > + kmsan_internal_memmove_metadata(dst, (void *)src, n); > + > + return result; > +} > +EXPORT_SYMBOL(__msan_memcpy); > + > +/* Handle llvm.memset intrinsic. */ > +void *__msan_memset(void *dst, int c, uintptr_t n) > +{ > + void *result; > + > + result = __memset(dst, c, n); > + if (!kmsan_enabled || kmsan_in_runtime()) > + return result; > + > + kmsan_enter_runtime(); > + /* > + * Clang doesn't pass parameter metadata here, so it is impossible to > + * use shadow of @c to set up the shadow for @dst. > + */ > + kmsan_internal_unpoison_memory(dst, n, /*checked*/ false); > + kmsan_leave_runtime(); > + > + return result; > +} > +EXPORT_SYMBOL(__msan_memset); This, we need this same for KASAN. KASAN must be changed to have the mem*() intrinsics emit __asan_mem*(), such that we can have uninstrumented base functions. Currently we seem to have the problem that when a noinstr function trips one of those instrinsics it'll emit a call to an instrumented function, which is a complete no-no. Also see: https://lore.kernel.org/all/YjxTt3pFIcV3lt8I@zn.tnic/T/#m2049a14be400d4ae2b54a1f7da3ede28b7fd7564 Given the helpful feedback there, Mark and me are going to unilaterally break Kasan by deleting the existing wrappers.