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 8960BC54FB3 for ; Mon, 2 Jun 2025 09:22:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DCC936B026C; Mon, 2 Jun 2025 05:22:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D7DAD6B026D; Mon, 2 Jun 2025 05:22:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C93526B026E; Mon, 2 Jun 2025 05:22:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A51A36B026C for ; Mon, 2 Jun 2025 05:22:13 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id A4A2DED2DA for ; Mon, 2 Jun 2025 09:22:12 +0000 (UTC) X-FDA: 83509919304.22.97592C9 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf15.hostedemail.com (Postfix) with ESMTP id D2D11A0005 for ; Mon, 2 Jun 2025 09:22:09 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=lICwubug; spf=pass (imf15.hostedemail.com: domain of da.gomez@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=da.gomez@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748856129; h=from:from:sender:reply-to: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=IFUJAPlQD2gVWNCmw7KO0TTcfvrzXt7OVDewGGRxsmk=; b=10cpYk9r658xyJPjQKF6u6OW5/CQCryz0pSzeVTHsvNGre9ig9Ds6pGAIUKkwx++Kj5NRx Z5qfvoYaYF+Ve/BxkyaT2Zz9p8ClYJPQcxSsg+omkG5Fqylt6nv0OjjOWA1Xdyb8bfhj1B hqNB/mH4G2yRHcqsbUZqko0t8XUswvo= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=lICwubug; spf=pass (imf15.hostedemail.com: domain of da.gomez@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=da.gomez@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748856129; a=rsa-sha256; cv=none; b=YIZ+NjR+Hlma+GtD5rpgOTb+BclAAEfgfjvkM58XTryw9JTBg4wsyVBnwzBDonarU4jDSG zsQyElfg63F6CuSZwOnxKGCEpqr0exKUTkOSq9YXPknbkNpH6MkQbNDab04UyA/w6HS6ze WxgLoF7CyI/FFJTFWRYF37IZIn4wzfE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 0DB646111C; Mon, 2 Jun 2025 09:22:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A579FC4CEEB; Mon, 2 Jun 2025 09:22:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748856128; bh=ifK3xbIKFgcxtP0ovq+mY1V3BtpZhbmCuyvu1jk/4Qk=; h=Date:Reply-To:Subject:From:To:Cc:References:In-Reply-To:From; b=lICwubugffui43uBhTiA2GuR1GI9CkTjcny09G6ay59OQUvedXwANCTe20nhUA8Fk 7pKqE6QZlvDDzeHaL6kTEPHsMiRamfdH3tLZcYaZWtSZV1I3zBzmqNtnKxCZzQC+5/ ktOStb25vWs9yDXF2SlzizqhHLlLIsTO6jp+NMUMBUkWdMw3z3WJShpX81ON5+AOGc 4QarCEq3YH++oSc+k9xr0mkuphjNOHhGJoNIJLDg4HIL69ddu2iFZ5srA6YISumtyD 5vBJasgi026w45had/IsiIHyZ5pf0wuHhcrk43cOGAG0xKtzAgSXqdzLy1k7tL5+yt LFfjyI6g7+Uiw== Message-ID: <76935443-b1b9-496e-bcad-e24f260836a0@kernel.org> Date: Mon, 2 Jun 2025 11:22:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Reply-To: da.gomez@kernel.org Subject: Re: xarray regression: XArray: Add extra debugging check to xas_lock and friends From: Daniel Gomez To: Luis Chamberlain , Matthew Wilcox Cc: Daniel Gomez , Tamir Duberstein , Andrew Morton , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, kdevops@lists.linux.dev References: <7df55910-13b4-4ac5-b13b-22a44366e193@kernel.org> Content-Language: en-US Organization: kernel.org In-Reply-To: <7df55910-13b4-4ac5-b13b-22a44366e193@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: D2D11A0005 X-Stat-Signature: y9ukqsunymh9se1d59xrznmh1f8zdmgp X-Rspam-User: X-HE-Tag: 1748856129-993714 X-HE-Meta: U2FsdGVkX18VPlGfXQpC1LVgjnxNWwNr44tvDarkIv7NnHm2wNBhClOBtXf+uBuCctm6GhhBEbvNDpNBXbXa9bSYCq+p7B7MaC9Rw8yRlZ3tjszfNZUQjJaWkacrgJ54X757eiruJNLeF1G3Bi7uR0JY07S1SH2xC20gpB3vum2CBZs2488C4O3H6fFiF78GXSK2q5H0p4LhICqcQvmQvEGa3Zz8qEuyxBPNfs4Pnig/M+QArqKEIFCWUVYQpbOV6vQcNWW6GOGDtiCeAAhsgETCdOM7QQNYtgvcHPkGgTmY2QVhcV0COH59cl8k6K/dvIwZU45qObJBlpCySpiz/UaJPbU6F1dxg0IDDcjram4rlxYxuj1T19HF6/GMjAy+oFFS+QvJ6Lo5bzdV0KOL2scA/X4NqNVNSWHdBZoHc38z6Gjq1gIQHsjWjh7SUZmJaXgLCIQ7SRdnnNe/ufHBNRIWjjKZZSTh+96A/g7j1553Lq058y1X7ryODOhxJKsnQp2IRFVoY1yxjY5HjHQPvxqTvNBjCN/NCOiGEQtyJ4hixGbHffSLm6W1Ao+yHTslYRK8QiJNgcKFV+JDVwelbL/Xr29026SaZdrwetMFMe0WFSl/Bzyu1vFYdtzgBDsYkZzX9wvnAKS7QLudJZgkvdnxHYA7d4XEn7zIKTVUhZmqXUarkOp95dfsTqlTSn+klVRu0nb2fBhvnIJh0U3HiI6g4APNL/pIFQqwouNm61nEAUvK7hUvuh42CbKvn0BPggdHPihJ+Tq+FvuEbc2Q6clTA1H8Tft6hUh6hz5p9DV7g1Jpchq24oTD3lDG2e3HGtK1JDBlBwQ7jE1iSsG508a2EFYbSaqZjB9FtUxVypFPynaydowvfYxDkfsCXto1jTm4wXbR6PIk6Pn9lW+aB+CtndxdAZXRP1KwotbmkXcPoEfvNE+piQ3eI2rSDi4OH7rEQuqKXObgpMSbrwp kiMOj5Tp 3nBCTt+ab3uQYAGExxRlASCbKwRxfZzVSG0mjpsWXec263H28suJMJ1sioQfJWDWURfr0gCadtBEpNojGtypOa4Xa5/ArehXy73RGdM4PMBZ2E20zngCOVAp18vXgXhXXqTpuUB1kEa7kkEV76P7J+mclOSfYefZTGYdUpNOcBiGmvas3vSjnfQ7i/5nK8VL46nbEeXcW2gL1+9PcoH/p4UuWx4/lR/hTzXhlvlX6S1MG1+oFG0V7qHK4Gd1uTa+jkAYy2kPFeZygS1YAOI4hS5vXQmItVQd6XbJl63MCKtgbqWJ5hKabXgWh3na6vCNhVVc/Iv7PNCj90kxJh7bR9I7U2FTVdk777O60ssq+m0G70hDvcuFD288vCls5acaQRVzDfxCY6GmGiMTOReuHuCKccDeNW23qA1V811XBnsBJiI7GIDqw2pCCeeJTCrtsvQHsjhZlczAfQ1fx43dzXVRwVJ9XAv69fnxp5eT2olglvAI= 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 30/05/2025 08.58, Daniel Gomez wrote: > On 17/04/2025 19.56, Luis Chamberlain wrote: >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: BUG at xa_alloc_index:57 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: CPU: 1 UID: 0 PID: 874 Comm: modprobe Tainted: G W 6.15.0-rc2-next-20250417 #5 PREEMPT(full) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: Tainted: [W]=WARN >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 2024.11-5 01/28/2025 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: Call Trace: >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: dump_stack_lvl (lib/dump_stack.c:122) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: xa_alloc_index.constprop.0.cold (lib/test_xarray.c:602) test_xarray >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: check_xa_alloc_1 (lib/test_xarray.c:940) test_xarray >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: ? __pfx_xarray_checks (lib/test_xarray.c:2233) test_xarray >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: check_xa_alloc (lib/test_xarray.c:1106) test_xarray >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: xarray_checks (lib/test_xarray.c:2250) test_xarray >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: do_one_initcall (init/main.c:1271) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: do_init_module (kernel/module/main.c:2930) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: init_module_from_file (kernel/module/main.c:3587) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: idempotent_init_module (./include/linux/spinlock.h:351 kernel/module/main.c:3528 kernel/module/main.c:3600) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: __x64_sys_finit_module (./include/linux/file.h:62 (discriminator 1) ./include/linux/file.h:83 (discriminator 1) kernel/module/main.c:3622 (discriminator 1) kernel/module/main.c:3609 (discriminator 1) kernel/module/main.c:3609 (discriminator 1)) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1)) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: RIP: 0033:0x7f0a99f18779 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 4f 86 0d 00 f7 d8 64 89 01 48 >> All code >> ======== >> 0: ff c3 inc %ebx >> 2: 66 2e 0f 1f 84 00 00 cs nopw 0x0(%rax,%rax,1) >> 9: 00 00 00 >> c: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) >> 11: 48 89 f8 mov %rdi,%rax >> 14: 48 89 f7 mov %rsi,%rdi >> 17: 48 89 d6 mov %rdx,%rsi >> 1a: 48 89 ca mov %rcx,%rdx >> 1d: 4d 89 c2 mov %r8,%r10 >> 20: 4d 89 c8 mov %r9,%r8 >> 23: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9 >> 28: 0f 05 syscall >> 2a:* 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax <-- trapping instruction >> 30: 73 01 jae 0x33 >> 32: c3 ret >> 33: 48 8b 0d 4f 86 0d 00 mov 0xd864f(%rip),%rcx # 0xd8689 >> 3a: f7 d8 neg %eax >> 3c: 64 89 01 mov %eax,%fs:(%rcx) >> 3f: 48 rex.W >> >> Code starting with the faulting instruction >> =========================================== >> 0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax >> 6: 73 01 jae 0x9 >> 8: c3 ret >> 9: 48 8b 0d 4f 86 0d 00 mov 0xd864f(%rip),%rcx # 0xd865f >> 10: f7 d8 neg %eax >> 12: 64 89 01 mov %eax,%fs:(%rcx) >> 15: 48 rex.W >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: RSP: 002b:00007fffcb2588c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: RAX: ffffffffffffffda RBX: 000055e8f735a970 RCX: 00007f0a99f18779 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: RDX: 0000000000000000 RSI: 000055e8e9dd2328 RDI: 0000000000000003 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: RBP: 0000000000000000 R08: 0000000000000000 R09: 000055e8f735c410 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 000055e8e9dd2328 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: R13: 0000000000040000 R14: 000055e8f735aa80 R15: 0000000000000000 >> Apr 18 02:30:42 e00aeb44aaa1-xarray kernel: > > Also, since xas stays invalid, xa_destroy() skips setting XA_FREE_MARK (via > xas_init_marks()), which I think is needed because we declared the array with > XA_FLAGS_TRACK_FREE flag in DEFINE_XARRAY_ALLOC(xa0). To clarify this: because XA_FREE_MARK is skipped in xa_destroy(), the next xa_alloc_index()->xa_alloc() call will return a different index than the one requested (base) and XA_BUG_ON(xa, id != index) check will fail.