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 33ADBEDE994 for ; Thu, 14 Sep 2023 08:08:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 962916B02C9; Thu, 14 Sep 2023 04:08:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 912AE6B02CB; Thu, 14 Sep 2023 04:08:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7DA606B02CC; Thu, 14 Sep 2023 04:08:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 6A2C16B02C9 for ; Thu, 14 Sep 2023 04:08:17 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 287F11210F1 for ; Thu, 14 Sep 2023 08:08:17 +0000 (UTC) X-FDA: 81234475434.28.DA4D685 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf06.hostedemail.com (Postfix) with ESMTP id 9DCD218000A for ; Thu, 14 Sep 2023 08:08:13 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=iXF2lvqe; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=Fv6WEmj+; spf=pass (imf06.hostedemail.com: domain of jack@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=jack@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694678894; 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=E/ecNnDz5zq7YMrO/wGOI+Yrvu8MsC3RqtEZg7CpzAM=; b=HdJJvOdNGXvqyiy3Z+yzodfqCCve8kr1KBQ+B0sNimGjefxFDx7ext9Ejv4w+PmS1lzuaH d4XwwxB4dFME61+RR17k0EORhRkmUhP1sTv9zt6z6fSQWWV4asDIjHa0R74+jxFiyB1+rJ EH+AUyiR4RJj3NdEuuajwGkDvUPzABY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694678894; a=rsa-sha256; cv=none; b=YtqyEujPiMTY8kolHfXtmBto2bjC51saN+y/JEH73BjumxLBJbVAOQOPmj3tnlF5yPJtbi i4Qv1sZQIf/TsfspNUM1/Ax5V3syQKBy3+BITZ6l2qeaIdkt/JvQCR1oAyOeL60Xz5dQCL YbAgyavAnAIf0y01dw4UHdFgZGU9N3Y= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=iXF2lvqe; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=Fv6WEmj+; spf=pass (imf06.hostedemail.com: domain of jack@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=jack@suse.cz; dmarc=none Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 84B541F74A; Thu, 14 Sep 2023 08:08:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1694678891; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=E/ecNnDz5zq7YMrO/wGOI+Yrvu8MsC3RqtEZg7CpzAM=; b=iXF2lvqeeTY41pqwpGIemAJn92B8uB5HcwimMF79k17rki4IDOuG1/fmhxDgQ3kC61Bp+x yxyEUd5bebZABOd1QmuX0W2vqETPHVFlnso1SBeRTQ3ApaSYDX1pbLbTa/BKf3mAqIvwUI v+BIRzsZwQeJMjS/Q01Pr60A6dWISbI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1694678891; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=E/ecNnDz5zq7YMrO/wGOI+Yrvu8MsC3RqtEZg7CpzAM=; b=Fv6WEmj+HG5HKo9vjKsLPyeE94ke481HEVXYKrauseWBxcq4Ov02zl13ywJRyZL6ZLfhaG IuFuzeoj2CZPnlCw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 72EB813580; Thu, 14 Sep 2023 08:08:11 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 1nsCHGu/AmVpIQAAMHmgww (envelope-from ); Thu, 14 Sep 2023 08:08:11 +0000 Received: by quack3.suse.cz (Postfix, from userid 1000) id 0D158A07C2; Thu, 14 Sep 2023 10:08:11 +0200 (CEST) Date: Thu, 14 Sep 2023 10:08:11 +0200 From: Jan Kara To: Matthew Wilcox Cc: Mirsad Todorovac , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton , linux-mm@kvack.org, Chris Mason , Josef Bacik , David Sterba , linux-btrfs@vger.kernel.org Subject: Re: [BUG] KCSAN: data-race in xas_clear_mark / xas_find_marked Message-ID: <20230914080811.465zw662sus4uznq@quack3> References: <06645d2b-a964-1c4c-15cf-42ccc6c6e19b@alu.unizg.hr> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 9DCD218000A X-Rspam-User: X-Stat-Signature: 4gpjqenkx1tudqd97xu7uad6tofg9s9x X-Rspamd-Server: rspam03 X-HE-Tag: 1694678893-176641 X-HE-Meta: U2FsdGVkX1/4OzKKWuWEpuiWF/hdQ2k4zF02zq4JAFMqQjU/H+qI5Sw9yPKxQ22hdoqw3eRpLG1zBjANswqJ/H8CCh0UzgRlr2N3lbTjQKwfxLEn96oQUl5k6Gz7TBCYlz+MCmnXQiuQLz2hWmNk0usEnO55zWpMWleim2HWvj3yK425CBrZFJ7yN0QIJGT4hK4EuNV1rTjTqV19rUiMUE2fI/Oum6q1mXDuNpyXxnYWO6JGaMa5ulDMjZlu5Qev26p+ePiBNURg8qg/6do7PFCPRm+AqKYfihMVdRFkvggLTWV22mLRuI7A/w49o19R/yRqOr00Sp9wMsjSH9PMYlPPAIG9zKXT0d+BvmOmb4MJnuHZKWyRZImsBH8a6UluLZsr+hLvKsOpuP/+fW1eUtDWOPpXTOjzaGqzqUw1YQWu5TKaExGXye6+v7qMRCh6IrdgQmAwIjRErARl1hm3Y8TMOnCyrmQ5gs7m/FQ+JF5YRe/xw5El9FXgk35npV29pOLTNYyb7b69QV9GIiVsyNbMs4g51dUFix2EN9p1PwHVhCS44QdN9kYOzSLY2bL5+m2QtCMgVetEuH9UN55clErZ4GXwMrli2H66oe5WW6LnpQQz18u0xoiNPZEXTuwpwMDtXFdYql2HXD6F+H6a9eyDXqTLlRVY1oIYve65bVws11e1Qsxa+dixJVkoDfupDk7Km1VIYtJveAtN3kdx3ORnStkDST1jxoL3rDLI+iakK5XH/CUgI5L2Tw7jAdSQrWN59FjFKRvf4oxasaTE8ciUjp+f7PymSlv+O24/LtsLLps8Wv2QpjRXMnEvd/ZWmMEYNSNxLBre4aJo9PS0Pyi7Vu1AT+42BJfva46MM07k46+B4LrVs2FpsBz1wA+sxWI+Yo3pWwSdZtn/MBFsx+0otcpnvpaagQLxAnP7XNzE3aUF6m6yCPy3gHUizabEzVlT7HW1hf7EVcmjLJQ 0sd5/RcD v3lPFxHyHWQHBdMyF9eUuV7Xgw4trLK9Osgsyz1NxkHaszxy0dT15bFC/f8Nt2xGsqmMq8J5UCC+djstG1XK9GI4WT8ipglDlwiqc9TfZzXakD71ZFkkRXK3jh8iaz4MWGgBOPm0watLEQAGNqgceh9jSwTyOws1VgqNmswo3mFG9IVPGpkhg1sWBFM4hz+cPCmt/I/j4rw1AlUGlc7xEnLTZQOAk/0FSXNUt4ieP8DqrEd1GY/zLJgxlUw6pk347pTFeC3dMhXzxX9sj+DJNdBO0UdcgM/eh3+hBkvvZBL++7Ow= 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 Fri 18-08-23 13:21:17, Matthew Wilcox wrote: > On Fri, Aug 18, 2023 at 10:01:32AM +0200, Mirsad Todorovac wrote: > > [ 206.510010] ================================================================== > > [ 206.510035] BUG: KCSAN: data-race in xas_clear_mark / xas_find_marked > > > > [ 206.510067] write to 0xffff963df6a90fe0 of 8 bytes by interrupt on cpu 22: > > [ 206.510081] xas_clear_mark+0xd5/0x180 > > [ 206.510097] __xa_clear_mark+0xd1/0x100 > > [ 206.510114] __folio_end_writeback+0x293/0x5a0 > > [ 206.520722] read to 0xffff963df6a90fe0 of 8 bytes by task 2793 on cpu 6: > > [ 206.520735] xas_find_marked+0xe5/0x600 > > [ 206.520750] filemap_get_folios_tag+0xf9/0x3d0 > Also, before submitting this kind of report, you should run the > trace through scripts/decode_stacktrace.sh to give us line numbers > instead of hex offsets, which are useless to anyone who doesn't have > your exact kernel build. > > > [ 206.510010] ================================================================== > > [ 206.510035] BUG: KCSAN: data-race in xas_clear_mark / xas_find_marked > > > > [ 206.510067] write to 0xffff963df6a90fe0 of 8 bytes by interrupt on cpu 22: > > [ 206.510081] xas_clear_mark (./arch/x86/include/asm/bitops.h:178 ./include/asm-generic/bitops/instrumented-non-atomic.h:115 lib/xarray.c:102 lib/xarray.c:914) > > [ 206.510097] __xa_clear_mark (lib/xarray.c:1923) > > [ 206.510114] __folio_end_writeback (mm/page-writeback.c:2981) > > This path is properly using xa_lock_irqsave() before calling > __xa_clear_mark(). > > > [ 206.520722] read to 0xffff963df6a90fe0 of 8 bytes by task 2793 on cpu 6: > > [ 206.520735] xas_find_marked (./include/linux/xarray.h:1706 lib/xarray.c:1354) > > [ 206.520750] filemap_get_folios_tag (mm/filemap.c:1975 mm/filemap.c:2273) > > This takes the RCU read lock before calling xas_find_marked() as it's > supposed to. > > What garbage do I have to write to tell KCSAN it's wrong? The line > that's probably triggering it is currently: > > unsigned long data = *addr & (~0UL << offset); I don't think it is actually wrong in this case. You're accessing xarray only with RCU protection so it can be changing under your hands. For example the code in xas_find_chunk(): unsigned long data = *addr & (~0UL << offset); if (data) return __ffs(data); is prone to the compiler refetching 'data' from *addr after checking for data != 0 and getting 0 the second time which would trigger undefined behavior of __ffs(). So that code should definitely use READ_ONCE() to make things safe. BTW, find_next_bit() seems to need a similar treatment and in fact I'm not sure why xas_find_chunk() has a special case for XA_CHUNK_SIZE == BITS_PER_LONG because find_next_bit() checks for that and handles that in a fast path in the same way. Honza -- Jan Kara SUSE Labs, CR