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 81D90C4332F for ; Thu, 14 Dec 2023 00:42:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EC0C16B049F; Wed, 13 Dec 2023 19:42:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E4A346B04A1; Wed, 13 Dec 2023 19:42:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CE9EF6B04A3; Wed, 13 Dec 2023 19:42:03 -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 B52EC6B049F for ; Wed, 13 Dec 2023 19:42:03 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 91AE3A1F70 for ; Thu, 14 Dec 2023 00:42:03 +0000 (UTC) X-FDA: 81563571726.15.70CF1A5 Received: from mail-ot1-f48.google.com (mail-ot1-f48.google.com [209.85.210.48]) by imf13.hostedemail.com (Postfix) with ESMTP id C6DB42000D for ; Thu, 14 Dec 2023 00:42:01 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eyXxARmZ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf13.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.210.48 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=1702514521; 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=lzK45zb0LxFLrNRkOxquQyQenMKLSRC3JhAeRqUtSRE=; b=xm37SW5BQq8IzC8Wi+PKGl1O5OQq24TVA88YuYyMFdwXXpoD7ftU/bM1YkWfURcQm0/yTc p6EeL7hQMkZNuDGZvbz1DSTVHBqsu8z0aeGmdpBQvj+QGRZ5EuCWBqkxMiNxkzrgbC+5ny +3i7u59wwbwH/UYLJvgydn76cQ4Hsoc= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eyXxARmZ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf13.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.210.48 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702514521; a=rsa-sha256; cv=none; b=FEn5WoHsmZc3zGqlTqlFcEpuWxkFDwWuapAuWJZnxsGMhHGasCaBpp/qhYl6JS7JjKHkP7 Q7qy/OReDd0dSbXXcILeMN7wFLXRqU4fjNhKJ06uukKJeOopZNb5Lg/0OyaR+PUMWCUust 017mkt3ms2frchFDlfzABWP7kc0tGK4= Received: by mail-ot1-f48.google.com with SMTP id 46e09a7af769-6da41cd19d3so74770a34.2 for ; Wed, 13 Dec 2023 16:42:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702514521; x=1703119321; darn=kvack.org; 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=lzK45zb0LxFLrNRkOxquQyQenMKLSRC3JhAeRqUtSRE=; b=eyXxARmZ3KqrWHCoh+O8PmUQOyDGr6qDIXYq02ygX9risHxXFZFLPmXkfSz/aAR2v9 ljNUz4jlrixt8hp1SifA6ptlTuyTSALqRugp1RsQDUuzIucB6Rchu/zYGRhmMpmpeMV8 7E7yzqEGh429xrghY4HyTD4SoJRLW0Ct/6GzembVMNiS68VeitzJLGd0Hokqw8jNx0Gp P1Hv4aaSdFrqeSBNxW5MVuDeghmz7GmpPMmsjYjabx32qCcSv9/xukXf96bWnylYrj7/ 3HyrG/kgPfRM2g7h5v8JNHFH/7Xj6u8sgK3ntGqbIIiCU7arvWqaJb3XNIfc0JU4msHu s4dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702514521; x=1703119321; 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=lzK45zb0LxFLrNRkOxquQyQenMKLSRC3JhAeRqUtSRE=; b=MK4tTEc0FjpmraRdKk8ytyx0trir/wjKRbKvWbyDbG85fiW7nk6R8aJU43E6yTUqMj PfhxLrJbCW1WLd4J3+5/bZcdns/B3Ta3O0QMOBVImg2bhpbpt30rQxbU9lJN8V9edeef TvvbHF40bigdR9u80dZAc99G8bV2gl0g/X22VVjKEvSbhJolH8QFcXiimUFRdpmg64DG lC8BEYufDRc5bz/A9cpXWt0egJgxMdm8CSS2TDNOGoNE9871LW7F3l7ti3rsq68zKB7o dSZu+z7rixdxQkxIz1MDyPUISLcri/iOF61uTWB8dJx9l9syAKFIlKtWvpsGaPxw84AL LJwg== X-Gm-Message-State: AOJu0YzIAYfjPb8V93S+wydFG5kpaN3EoAkrjNZhnBhFpM7BorKPVYtT PqgQO0mZQJkgrI9aK7KViCj1QdKLySL/vy7BVP8= X-Google-Smtp-Source: AGHT+IGMTFCE9oaDso7qlnVj3yEBftp5GlnkEY1TwrVseMJ8q7KOPWfmxpkgO4AojopgKh50WCetfRXcgrPixf49kQw= X-Received: by 2002:a05:6830:4423:b0:6d8:7ba7:c8b4 with SMTP id q35-20020a056830442300b006d87ba7c8b4mr11075778otv.6.1702514520732; Wed, 13 Dec 2023 16:42:00 -0800 (PST) MIME-Version: 1.0 References: <432a89fafce11244287c8af757e73a2eb22a5354.1702339432.git.andreyknvl@google.com> In-Reply-To: From: Andrey Konovalov Date: Thu, 14 Dec 2023 01:41:49 +0100 Message-ID: Subject: Re: [PATCH mm 2/4] kasan: handle concurrent kasan_record_aux_stack calls To: Marco Elver Cc: andrey.konovalov@linux.dev, Andrew Morton , Alexander Potapenko , Dmitry Vyukov , Vlastimil Babka , kasan-dev@googlegroups.com, Evgenii Stepanov , Tetsuo Handa , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrey Konovalov , syzbot+186b55175d8360728234@syzkaller.appspotmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: C6DB42000D X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: eiu1nhmjpbang6mjcgo9fkdgpxp6fyke X-HE-Tag: 1702514521-759887 X-HE-Meta: U2FsdGVkX1+ePQ1WBrIt5qhNjl5c7QKpfqMaNqDTw54d7XrWMMdSr/xo1VT7lJbs597JnbtxWS/PKS/VYSPXXXchGDqTVJXhGCMQhWzICI6tEimRGO+BwMgOEzvSHH48pMRX1LD2/N/KkiGckznk6y0LjS1BKXRnklU8d2O3WmT8SsX+iK5fPTBMvurqUl30pAtyz9lqqPBEnfn11QysKYEHOYcvBmPYCx1g0CG/Zv6Gdx4Ji2Gtg8iUzlhi/b0WHddKFXfyKgs6sSrLfrn92H1oseUuXaO49sCmkLSyX9J8rwb0fuTZoCoCmrCk7L4Ha4u7N5pvIxl+ma/JKJ9a2yxuTenWGjtDDcwfRWAoDgBgOaq9F/ekaq1NkPQXM48tBmt2zlBlC25Jzazn0scjSW1I1ZZrs3EZlc3hELWDX7MQqIoZKUvI1Vi7awPjika23ylp5PJ2ch2qm12F1ZisiR6GaJswHXS2M0zcVI8LcpDaLSlafcjuJRAFKD0fwtn/ah9DzUCXC8Yruj1yB2o3QExLFkSB4k9dHYCDtGeUdvFQZWvJFEaefwVF0UVPgQRSho+BDxxWKJxwUyVFIHgFh9Rt+AXlhPgyzynY5dY7GKMBMs8FWqpsyFuonMkhCtrWVG+05wlq7lpN071K0o7GVjv9AsDwyzZnEhWEbOoW52PDaba3XdTSUzVsTy0m/SpeIU5K8pqGNKQ87u/JMeEWq94vl9HOK01m6mJP4WNwj8Fe3eKJnxjDTA6ERRDrwAvA4HL3+xSK1kcgl06APCsegPpCRxuE/8d1E6AI8GzrogrU9sEO5IXMj/VZ8xq/pGx0cLlR61Ulgxf3MwRDD9EsRKxHgfXWi/Si4CDi3B9yVWBSlfjNTgbHvg0x3OKDw4ZHdNygHWGUe1R55LAkf84DG1W4UZrwF+V3Oz7vXEhVHj+AksFxLG+hTWkh4gSAOjvMptkw2O28f5LCRvFKkuO Nepy5NTB LE+Y9Nw9+ZSRx/Yi862mQr57/F1jr0tJ1ezMrHaHu3Ob145WQbNeS8QRnJ2/GrsthcjZKKEtdo6qH4qTr87kzlEhOdI3h0w92rKuE/6mwGVtfADHUyirf1iWdEvPnRRdIaXAhow1y5HKLmTA/Bcf/sMJsS3CCiJzIWCAMBDHkYt+ZkKDf/gcGVwsUk9zYXZRjdWDNnjC6iSl23oW5O2E1bhupO8Fr/APZfiqUVeartoRlX5KzUyQ3WEzDzbyuj5tbaZa6jsotVXdMrAHcpUWrzlddPlVG2YPkDGdsX0dncfEk5Ra094RpQBHBRz25Z8Trbo+mFmYcZP5ep+tqOC/hgV92VGJu5Cogh1FBCjQ5R9/aKSYa5otFB3S/T00+dn/PKq3/uYcMmbq3k9yHFV8W/gGFI6MU4e1ktQe8oPDOCsFd6hKednbSUs9v5TMwafXG7iDeElVLY7FVpTZl94pILXfMrjbQqyRG+X2Npje+BixPy517dFymv8SkENxzVTRCVtyuLuj36k8BQVA= 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, Dec 13, 2023 at 5:51=E2=80=AFPM Marco Elver wrot= e: > > > > [1]: Since a depot stack handle is just an u32, we can have a > > > > > > union { > > > depot_stack_handle_t handles[2]; > > > atomic64_t atomic_handle; > > > } aux_stack; > > > (BUILD_BUG_ON somewhere if sizeof handles and atomic_handle mismatch.= ) > > > > > > Then in the code here create the same union and load atomic_handle. > > > Swap handle[1] into handle[0] and write the new one in handles[1]. > > > Then do a cmpxchg loop to store the new atomic_handle. > > > > This approach should work. If you prefer, I can do this instead of a sp= inlock. > > > > But we do need some kind of atomicity while rotating the aux handles > > to make sure nothing gets lost. > > Yes, I think that'd be preferable. Although note that not all 32-bit > architectures have 64-bit atomics, so that may be an issue. Another > alternative is to have a spinlock next to the aux_stack (it needs to > be initialized properly). It'll use up a little more space, but that's > for KASAN configs only, so I think it's ok. Certainly better than a > global lock. Ah, hm, actually this is what I indented to do with this change. But somehow my brain glitched out and decided to use a global lock :) I'll change this into a local spinlock in v2. Thank you!