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 7E660C6FA99 for ; Fri, 10 Mar 2023 23:50:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 14D426B0072; Fri, 10 Mar 2023 18:50:24 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0FD5C6B0074; Fri, 10 Mar 2023 18:50:24 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F2DB26B007B; Fri, 10 Mar 2023 18:50:23 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id E5AAA6B0072 for ; Fri, 10 Mar 2023 18:50:23 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B8FDE809CA for ; Fri, 10 Mar 2023 23:50:23 +0000 (UTC) X-FDA: 80554635126.20.DE30F83 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by imf10.hostedemail.com (Postfix) with ESMTP id EDD3EC0012 for ; Fri, 10 Mar 2023 23:50:21 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Zb1mq1ps; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.214.171 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678492222; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=TWyYImSF4m0qt3ueUgGNFztvxSwHcqnFDOTOnYZc4d8=; b=rg0wX7rYt1AFjMV7KgZNGytBnNbxjXUMbwA3ezkIYo6g8ePAKQgbkcsQrmVo8ZJJ0sh5Cr Y9yMxQ8DaMgyLAVcCwN4P4SPd9O38oYOhZWiuaJkrd6viN7zZEtrVPOfBAywC8Mz23gM3q IgwrpWwnJZ4yIirTMhTmYOh7vSMy8WY= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Zb1mq1ps; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.214.171 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678492222; a=rsa-sha256; cv=none; b=5qHzTf4lO5ob7HEnG83EWkQR/885JTy+ovU6GJWoekwyz0TtXIRhJKHjo0QG8n+BrveFHB yaF9ysZ/TsL1onRN7TT11PQ0pEKSKDvR4KwE1HA57DB5N0IHleC8qYs85HiP+NU0h9pp2e sqvwjB7cqlMJJ5wLhW9MyIqVnILCgjk= Received: by mail-pl1-f171.google.com with SMTP id x11so7274385pln.12 for ; Fri, 10 Mar 2023 15:50:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678492221; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=TWyYImSF4m0qt3ueUgGNFztvxSwHcqnFDOTOnYZc4d8=; b=Zb1mq1ps8eV7fiIOg285n4VDwnQ8IxixllRpKM+wYlYxvrI6LbruQiHGqkLYVmy0iy BZwTEuHpg+k7sRmyn25XbDba43HMPHEYo1Jm4kJj+xhe6/TvAw3nqbvIsrqzBglXZYcZ OYDwZCd0P6iQlGcA4qFLE57Qm/fyUsA1F7sph6l9sSxVTqGonhsihK7Sx/ULzS6/mehn W/hSgQsltum0ZXoUlOzf6+VvTeQknJdOykkkhmRdK/Qok8g6QMCWN5yZqK1/rpcWUSqa z2zzGU0WNgG90m//LslE/BIXf4FPhzgLOYtWIoaMSQo8p30zLHnkjhzeFC85uap8dwWY JuNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678492221; h=content-transfer-encoding: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=TWyYImSF4m0qt3ueUgGNFztvxSwHcqnFDOTOnYZc4d8=; b=RW9PuuKsi9Ov1z3Qfb/xQZNiEuAmCh+nRIBv+xomxe+IDdRUyTtrzhd+nffHNET6Ft EDCAEgrbnoa8hO9RkTJcPZqf948fSeyAvhBUA2ymh5CPTsTiUls69g5ivu4We+WSk8iS 3ICjCYwAnfvC9DPpfCimrO/HDa+XTaHQICvSuHiDEW9wff488qdvqwVdFY4FCblSK+hh PIN8J7UDjPqyD//N1mSeG3nLDf8/9BtemdTMf/yXk/FqLud2kD1iNnmknsLAohldoMiI HJSQTE5z3/i2/agnvf5AstiT1PsJj4EOzK8tnCMWEfuYWD0j2Sdt1+DkuS+hfYgEpija wvxw== X-Gm-Message-State: AO0yUKWF27QqJBTmpwx19faWhV2VcwS5Okg1R0BnrssEy1CvYO72H488 BY2pdeqFKweZvu/7RmbLa1nxefig1tyLS9gySww= X-Google-Smtp-Source: AK7set9yPWPLhCJJqju34JnyYz1ou4U8qNzsXMLH19czqyQSsp4MXTFLF7uEiBMUS32lgPHbopd2lbCnGgs/Nw2E/UA= X-Received: by 2002:a17:90a:bb8d:b0:234:b23:eade with SMTP id v13-20020a17090abb8d00b002340b23eademr9946913pjr.9.1678492220849; Fri, 10 Mar 2023 15:50:20 -0800 (PST) MIME-Version: 1.0 References: <20230306111322.205724-1-glider@google.com> In-Reply-To: <20230306111322.205724-1-glider@google.com> From: Andrey Konovalov Date: Sat, 11 Mar 2023 00:50:09 +0100 Message-ID: Subject: Re: [PATCH 1/2] lib/stackdepot: kmsan: mark API outputs as initialized To: Alexander Potapenko Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, elver@google.com, dvyukov@google.com, kasan-dev@googlegroups.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: EDD3EC0012 X-Stat-Signature: 7osedq8gcwaen4eusyeuihs6x5ypjk5m X-HE-Tag: 1678492221-143856 X-HE-Meta: U2FsdGVkX19w2rw7YeTI8ncEWlihu8JbMiKm2qOnCympQLqX/9ReMbslMRY0HNq607Zy80HKm8SaAWllkh/ciX/7phfQJag6j1VRMTRqXXr0MaFksW/cx9sPCJ+KrLcYTiDj1AQZMm8CXLfFxWssP8OX/MEA14V7Tpy2mZSDNtQrRH9AFLKDQu9hEdvcrEqs1JXTA/jonitW8XjtSZSRTAdqU4CTryN4tuPlw3nIJQAqeD3UwWM87O8MRUX/OVyyJUFIXG4F2AJlDhAmuKxzMno04aGkpYxn4N4yztLEEstAUp/TwcOvy6ipOHNQwf/UbHVM6c2LZZamq1DYEWiqdC90TqjdaNnG8WXjU6CXTbY9R9uQsL4YzhLezoeMHfMk+mz7o3xQy2E+5t+Bfuk4CkxuYceFGag5tAxBnRhQgcd3dVlUf1ZKMJUn37u5jSEfE3GV9r4Xsf4e134YN1yevOWwUhV1waVHiLpeAPWZJ1ogOWWE5pIsio5bEWlYx6VJBGf0qFPaU1P9GZlqHR7ifRX47q/T744yEN7kqZ8EFgqBqOWUt8l6DAOx3e0n982/RY6Yz34hUKPjcfcYZs1o/2ZTi1zAj0AJfgo9aZLXCD7fy1241IYvFHVZsg5Ec+bO8DyG5SG9pmD745N+PgZHIcw+FRoAqMn1kB0zsHo/RjJ7Zo1gg/WX4oa/DW8ySgN9P666PYhGdgkQXgEuooFXtpUluH7XFYWnxr1604nVDs6df8y+Gq3B1VvsLkW8s3ClX8omfRENtqU0xT1JbuU8OoLizoVYCR/qlRXmTaB21B8p0XF87xloVNV3fAYs6jUovCSIizy89J3c4/gqAU343ccENHtUMSD/vW95OJNy6W3P+fwq6h4WvKLG5nay6yUczNrfBs1BrinDgD9vkaXX5F4CJ+UYUCvwxJP/4wlEUqeE+ChynzhfmLnjPPnhyD8gN0TjImZc0szS7IdsqD4 q7jh/Hvo GriBNROeFySots42eOjOwwqkwSJylBYamHOefyLdjFKbx9t6oJ6ETa1AN048pFC8FNAZLe2Ngugd3OrQeDWoVt1tKjoMDDwgfLQmpbIFogA5Uj2ig4rReuMUrZeU4/KJecdIgwCPtdARQOQWbzWrKElzUufr8vYRvrGxIhbPJCWAwytH9DO+Ew1rio7CaxSKIXhCBNiATxP+6Mp2dLd4W1UcIancxJSQpU8aBIAOwHNWSlGZcpq2shoDakTCjSqr/1bMki1M7ki93382sn225USJTmrDSCUh7StBmPNHy39alnudFsmhf+VHmwJCqgo0ytQm2u57ckY73ZaqMEiEI2hAiNaMAXvUWXF0FWF/BtTZJUsqVbDE86Sdq7/nCZaMtYgYSleYjz7N9f0n18B8HhrdfXm78XTcL+vjs 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 Mon, Mar 6, 2023 at 12:13=E2=80=AFPM Alexander Potapenko wrote: > > KMSAN does not instrument stackdepot and may treat memory allocated by > it as uninitialized. This is not a problem for KMSAN itself, because its > functions calling stackdepot API are also not instrumented. > But other kernel features (e.g. netdev tracker) may access stack depot > from instrumented code, which will lead to false positives, unless we > explicitly mark stackdepot outputs as initialized. > > Cc: Andrey Konovalov > Cc: Marco Elver > Suggested-by: Dmitry Vyukov > Signed-off-by: Alexander Potapenko > --- > lib/stackdepot.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/lib/stackdepot.c b/lib/stackdepot.c > index 036da8e295d19..2f5aa851834eb 100644 > --- a/lib/stackdepot.c > +++ b/lib/stackdepot.c > @@ -17,6 +17,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -306,6 +307,11 @@ depot_alloc_stack(unsigned long *entries, int size, = u32 hash, void **prealloc) > stack->handle.extra =3D 0; > memcpy(stack->entries, entries, flex_array_size(stack, entries, s= ize)); > pool_offset +=3D required_size; > + /* > + * Let KMSAN know the stored stack record is initialized. This sh= all > + * prevent false positive reports if instrumented code accesses i= t. > + */ > + kmsan_unpoison_memory(stack, required_size); > > return stack; > } > @@ -465,6 +471,12 @@ unsigned int stack_depot_fetch(depot_stack_handle_t = handle, > struct stack_record *stack; > > *entries =3D NULL; > + /* > + * Let KMSAN know *entries is initialized. This shall prevent fal= se > + * positive reports if instrumented code accesses it. > + */ > + kmsan_unpoison_memory(entries, sizeof(*entries)); > + > if (!handle) > return 0; > > -- > 2.40.0.rc0.216.gc4246ad0f0-goog > Reviewed-by: Andrey Konovalov