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 B2348C433EF for ; Wed, 30 Mar 2022 08:59:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4CF8E8D0003; Wed, 30 Mar 2022 04:59:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 458768D0001; Wed, 30 Mar 2022 04:59:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2FAD28D0003; Wed, 30 Mar 2022 04:59:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 1E29A8D0001 for ; Wed, 30 Mar 2022 04:59:06 -0400 (EDT) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id C8E301828AE51 for ; Wed, 30 Mar 2022 08:59:05 +0000 (UTC) X-FDA: 79300453050.21.67A5EA4 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf12.hostedemail.com (Postfix) with ESMTP id 2431A4000B for ; Wed, 30 Mar 2022 08:59:04 +0000 (UTC) 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-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 2431A4000B X-Stat-Signature: pzkpbhiuqg9d3hy7ywuqmyehdsy4q6ym X-Rspam-User: Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NfqWE2Z5; dmarc=none; spf=none (imf12.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org X-HE-Tag: 1648630744-352048 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: 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.