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 5EC7DC52D71 for ; Tue, 6 Aug 2024 08:47:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 993896B007B; Tue, 6 Aug 2024 04:47:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 943206B0082; Tue, 6 Aug 2024 04:47:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 80A776B0083; Tue, 6 Aug 2024 04:47:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 6313C6B007B for ; Tue, 6 Aug 2024 04:47:24 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 0800D41E48 for ; Tue, 6 Aug 2024 08:47:24 +0000 (UTC) X-FDA: 82421191608.02.B9FB1BB Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf26.hostedemail.com (Postfix) with ESMTP id 1F065140014 for ; Tue, 6 Aug 2024 08:47:21 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf26.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722933981; 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: references; bh=a1HJTeqHsQv9WQ3vSf/ggh22i9JoqiJRjo8HVjVRyVA=; b=YgvoTcBjKvtoZxOGdL37q4WwjNvjAIHw1Q2wQwl2dWfFvs2iP5FIjr4gI/wo2xEPpM3ubG L5gfI/pyzxyLcfN1a8SAkEe+t6A0j85e+rc+juJSIoGFbgK15K9AZaq4lsFtjltLfIKxOf s9zEIWoCstUDk4SXj6T8WnElNX8r0pY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722933981; a=rsa-sha256; cv=none; b=o7PAsNFl8SCHtt1A0Hfk9kB6pKFjfFUMnFk+P1IRe46FaqLvOCTjS3VxDxdajTEH9cxfYL LyIauHp/YHZ0HF0NybB/+mecOs8ZXlql4vG4TuTwTsXQrU/Kf5Wx5MjCAp4f94DOxfn2pz NtVHq6OzjdRI0Qc7F3mUrsnkK55q9WY= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf26.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D50FD106F; Tue, 6 Aug 2024 01:47:46 -0700 (PDT) Received: from [10.57.81.200] (unknown [10.57.81.200]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9B7FA3F766; Tue, 6 Aug 2024 01:47:20 -0700 (PDT) Message-ID: <234b0b85-cbf1-4af4-85c9-ac0d00ceeed2@arm.com> Date: Tue, 6 Aug 2024 09:47:19 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-GB From: Ryan Roberts To: Matthew Wilcox Cc: Mark Brown , Linux-MM Subject: shmem folio changes have broken linux-next Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 1F065140014 X-Stat-Signature: ub41uh7o6oxsc6e44nxdhkwkc7j3zb4x X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1722934041-665290 X-HE-Meta: U2FsdGVkX1/C1BmB3xNSI9jCiEkqsUkMqEzQoTImiHo/JVfhjQJSbSnlvdgDbUGlwHYzBLoR7WQcqgiqE2j+0nW3zwTEEupwbXyzzuMc+TwSlrlQNrzpDbAGktYhmCKq0efdqByqG64qZrcLfGgnoEnSB6Jx1Nwa7oR8Us2nxqcht7/Ka2FUKLmIwIuOAMyJxGbfhs33iFRMb44ce4a5s8LyZIj2dBum5zKRX1vXj/J2JAJ7b2ddA8wOFhf/0I0q7CZap1lzgDwsQNUVGbpt8BN4JDA6ZpendfjymsXmUgKgxNFid92itn7RdTr+YgHmugeJSy8zuopwjEeSX7aRmPWXeRyNqnAqTs5x4yFQJGafLsSMiIN89nQLOz1So+Xz997uAJj7mB8BV4j05MH65ITS3BzeqpmQmIiuT7uJP8JPBOUnbeJydAe3+h5FdOJHZBrmq1Xxi0JwXk9d1eMAN2Pzd0qtgAkjQlf/ZCgskXoS5OBoSIe+rkvVhTR5cWKyKc6+NSytNfoMQBxCcFLLPcrMUQNb8uGImtqOyVOKqm6CfLOiUQOwZM504t993acdHBB3ggQCA402tmsUKMDLDiUijfGx6JQ5jleEg4Z5mr8WlckGOOTJ2RqCABxJ76cLiTV5Cw4rWlYdXslBdX/8YQ4ZX70zuh0wSJhTstjVXZ/WQIZKnWczazZVEgc0gHGFaJyOo09qj5rb6mqHplUoKaKTy7kpHFQ3/bKiX6imeshDwGR4VwwdOWhdUUIdEQ5Nxmr75J9cHLiWDvB4TiBelPucEJ4bVXizt5sDKofndverh4ggOWt4vaea5jXxNTV3mqvgqlE2CT5uJjDrO8suTeDzUayhMV0YtAFrzQl0rQYzEcjjH3v0OZoitnsnM8j52261mTdtYDypS9rzVGNvm8P8/Dmr0ARMLI6pG4H0LEw6WIc0Y4hQHwrV/NEEOrU6N2rHbJUNthvMyLEjoyP 3PyRtg0L PgKXT0yf9JCiaGiQ9XbWp+RQmUvk3tOJJAIzCeT1slyqAbqrFrO/+5KvOJ1uLgDKl+y25+fjk1XXl0DWP6uQk7tGmUsuVtShkJgkTP4UhQbXBsj/stEHEPDIKTDxW0BkFfAHgxPrSaRCPVXoheMFLnJN+BzehUec+F0XHoHXqZ/eKsIRNiCeHlRfdzbaCL+l0XZSOh3e7kg/5vKS3tq3Zw7OU0Uj6JGnM20M/psWId3x/8iK4NBi2Y4I6T/b3i3MQdmTa 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: Hi Matthew, Our CI is reporting an oops during boot on linux-next (next-20240806) on arm64. Bisect tells me that it is due to your commit cdc4ad36a871b ("fs: Convert aops->write_begin to take a folio"), but there is no link to a mail thread on the patch and I can't find it in lore. Anyway, I believe the issue is that you are doing this in shmem_write_begin(): if (folio_test_has_hwpoisoned(folio)) { But folio could be small and I think that function is only safe for large folios? (AFAICT it is unconditionally looking at the flags in the second page?). Elsewhere in the file, this pattern is used: if (folio_test_hwpoison(folio) || (folio_test_large(folio) && folio_test_has_hwpoisoned(folio))) { Here is the oops (pretty much as soon as we get into user space): [ 0.623253] page: refcount:3 mapcount:0 mapping:00000000eebcb8cf index:0x0 pfn:0x18cc07 [ 0.624212] memcg:ffff000142023000 [ 0.624617] aops:shmem_aops ino:800 dentry name:"memfd:snapd-env-generator" [ 0.625444] flags: 0xbfffe0000040005(locked|referenced|swapbacked|node=0|zone=2|lastcpupid=0x1ffff) [ 0.626532] raw: 0bfffe0000040005 0000000000000000 dead000000000122 ffff000181dd0ac0 [ 0.627442] raw: 0000000000000000 0000000000000000 00000003ffffffff ffff000142023000 [ 0.628331] page dumped because: VM_BUG_ON_PAGE(n > 0 && !((__builtin_constant_p(PG_head) && __builtin_constant_p((uintptr_t)(&page->flags) != (uintptr_t)((void *)0)) && (uintptr_t)(&page->flags) != (uintptr_t)((void *)0) && __builtin_constant_p(*(const unsigned long *)(&page->flags))) ? const_test_bit(PG_head, &page->flags) : generic_test_bit(PG_head, &page->flags))) [ 0.632106] ------------[ cut here ]------------ [ 0.632630] kernel BUG at include/linux/page-flags.h:308! [ 0.633269] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP [ 0.634046] Modules linked in: [ 0.634412] CPU: 2 UID: 0 PID: 109 Comm: snapd-env-gener Not tainted 6.10.0-12082-gcdc4ad36a871 #11 [ 0.635523] Hardware name: linux,dummy-virt (DT) [ 0.636117] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 0.636994] pc : const_folio_flags+0x60/0x70 [ 0.637520] lr : const_folio_flags+0x60/0x70 [ 0.638066] sp : ffff80008389bbf0 [ 0.638487] x29: ffff80008389bbf0 x28: ffffba16d28a6540 x27: 000000000000004c [ 0.639383] x26: ffff000181b4c500 x25: 0000000000000000 x24: 0000000000000000 [ 0.640252] x23: 0000000000200000 x22: ffff80008389bd60 x21: fffffdffc53301c0 [ 0.641278] x20: ffff80008389bcc8 x19: 0000000000000000 x18: ffffffffffffffff [ 0.642162] x17: 3130303066666666 x16: 2066666666666666 x15: 0720072007200729 [ 0.643048] x14: 0729072907730767 x13: 0720072007200729 x12: 0729072907730767 [ 0.643916] x11: 0720072007200720 x10: ffffba16d43ef600 x9 : ffffba16d1532b3c [ 0.644808] x8 : 00000000ffffefff x7 : ffffba16d43ef600 x6 : 0000000000000000 [ 0.645680] x5 : 80000000fffff000 x4 : 0000000000000fff x3 : 0000000000000000 [ 0.646569] x2 : 0000000000000000 x1 : ffff000181e39180 x0 : 0000000000000166 [ 0.647443] Call trace: [ 0.647753] const_folio_flags+0x60/0x70 [ 0.648247] shmem_write_begin+0xa4/0x170 [ 0.648755] generic_perform_write+0xd8/0x2d0 [ 0.649294] shmem_file_write_iter+0xa8/0xb8 [ 0.649835] vfs_write+0x2b8/0x370 [ 0.650259] ksys_write+0x70/0x108 [ 0.650676] __arm64_sys_write+0x24/0x38 [ 0.651141] invoke_syscall+0x50/0x120 [ 0.651606] el0_svc_common+0x44/0xf8 [ 0.652051] do_el0_svc+0x28/0x40 [ 0.652447] el0_svc+0x34/0xe0 [ 0.652821] el0t_64_sync_handler+0x13c/0x158 [ 0.653346] el0t_64_sync+0x190/0x198 [ 0.653810] Code: 54ffff21 b000dd41 912c0021 94009c7b (d4210000) [ 0.654579] ---[ end trace 0000000000000000 ]--- [ 0.655157] note: snapd-env-gener[109] exited with irqs disabled [ 0.655932] note: snapd-env-gener[109] exited with preempt_count 1 [ 0.656724] ------------[ cut here ]------------ [ 0.656788] systemd[108]: /usr/lib/systemd/system-environment-generators/snapd-env-generator terminated by signal SEGV. [ 0.657281] WARNING: CPU: 2 PID: 0 at kernel/context_tracking.c:128 ct_kernel_exit.constprop.0+0x100/0x118 [ 0.659817] Modules linked in: [ 0.660194] CPU: 2 UID: 0 PID: 0 Comm: swapper/2 Tainted: G D 6.10.0-12082-gcdc4ad36a871 #11 [ 0.661435] Tainted: [D]=DIE [ 0.661796] Hardware name: linux,dummy-virt (DT) [ 0.662351] pstate: 204003c5 (nzCv DAIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 0.663209] pc : ct_kernel_exit.constprop.0+0x100/0x118 [ 0.663860] lr : ct_idle_enter+0x10/0x20 [ 0.664357] sp : ffff8000801bbdc0 [ 0.664776] x29: ffff8000801bbdc0 x28: 0000000000000000 x27: 0000000000000000 [ 0.665655] x26: 0000000000000000 x25: ffff0001420b0000 x24: 0000000000000000 [ 0.666533] x23: 0000000000000000 x22: ffffba16d4369dd0 x21: ffffba16d380ccf0 [ 0.667398] x20: ffffba16d4369c70 x19: ffff00017ffc8fe8 x18: 0000000000000001 [ 0.668291] x17: 0000000000000000 x16: 1fffe000284881a1 x15: 0000ffff9eccdfff [ 0.669171] x14: ffff80008389b758 x13: 0000000000000000 x12: ffffba16d2e5e880 [ 0.670073] x11: 0000008bef90e7c6 x10: 0000000000000ad0 x9 : ffffba16d158cbf8 [ 0.670965] x8 : ffff0001420b0b30 x7 : ffff45eaac7bf000 x6 : 00000000ffffffff [ 0.671871] x5 : 4000000000000002 x4 : ffff45eaac7bf000 x3 : ffff8000801bbdc0 [ 0.672750] x2 : ffffba16d3809fe8 x1 : ffffba16d3809fe8 x0 : 4000000000000000 [ 0.673636] Call trace: [ 0.673949] ct_kernel_exit.constprop.0+0x100/0x118 [ 0.674543] ct_idle_enter+0x10/0x20 [ 0.675009] default_idle_call+0x24/0x148 [ 0.675487] do_idle+0x20c/0x270 [ 0.675879] cpu_startup_entry+0x40/0x50 [ 0.676347] secondary_start_kernel+0x138/0x160 [ 0.676899] __secondary_switched+0xb8/0xc0 [ 0.677412] ---[ end trace 0000000000000000 ]--- And here is the bisect log: # bad: [1e391b34f6aa043c7afa40a2103163a0ef06d179] Add linux-next specific files for 20240806 git bisect bad 1e391b34f6aa043c7afa40a2103163a0ef06d179 # good: [de9c2c66ad8e787abec7c9d7eff4f8c3cdd28aed] Linux 6.11-rc2 git bisect good de9c2c66ad8e787abec7c9d7eff4f8c3cdd28aed # bad: [01c2d56f2c52e8af01dfd91af1fe9affc76c4c9e] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git git bisect bad 01c2d56f2c52e8af01dfd91af1fe9affc76c4c9e # good: [3610638e967f32f02c56c7cc8f7d6a815972f8c2] Merge branch 'for-linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git git bisect good 3610638e967f32f02c56c7cc8f7d6a815972f8c2 # bad: [1b3d9c66aa0d64054a8f9fa1c14db3ee78156a50] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git git bisect bad 1b3d9c66aa0d64054a8f9fa1c14db3ee78156a50 # bad: [1b3d9c66aa0d64054a8f9fa1c14db3ee78156a50] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git git bisect bad 1b3d9c66aa0d64054a8f9fa1c14db3ee78156a50 # bad: [1b3d9c66aa0d64054a8f9fa1c14db3ee78156a50] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git git bisect bad 1b3d9c66aa0d64054a8f9fa1c14db3ee78156a50 # bad: [d15fe7f84765bc7905e3128bfbce964e5b77164e] Merge branch 'vfs.all' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git git bisect bad d15fe7f84765bc7905e3128bfbce964e5b77164e # bad: [dc811e7b74eb4e5ae5fae7ef9e2e88c518bd9499] Merge branch 'work.write.end' git bisect bad dc811e7b74eb4e5ae5fae7ef9e2e88c518bd9499 # bad: [c1dbed4c3c12f54037bd418b5c46a3a10d507cb5] Merge branch 'write-end' of git://git.infradead.org/users/willy/pagecache git bisect bad c1dbed4c3c12f54037bd418b5c46a3a10d507cb5 # good: [753b3c028d7ee9a47b13bb4ee70a34a70b647cec] minixfs: Convert minix_delete_entry() to work on a folio git bisect good 753b3c028d7ee9a47b13bb4ee70a34a70b647cec # good: [ef2c557265b13f52f845655f7df1f8a9fc44ed72] f2fs: Convert f2fs_write_end() to use a folio git bisect good ef2c557265b13f52f845655f7df1f8a9fc44ed72 # good: [4fc11ea804155651591518a011494598086a6a27] orangefs: Convert orangefs_write_end() to use a folio git bisect good 4fc11ea804155651591518a011494598086a6a27 # good: [300dd0fa8e20eca38c251fbe4b0b373f4b53c1b4] fs: Convert aops->write_end to take a folio git bisect good 300dd0fa8e20eca38c251fbe4b0b373f4b53c1b4 # bad: [d5dd3891b9ec273f12c5d0e147d365956fc24b8f] ocfs2: Convert ocfs2_write_zero_page to use a folio git bisect bad d5dd3891b9ec273f12c5d0e147d365956fc24b8f # bad: [cdc4ad36a871b7ac43fcc6b2891058d332ce60ce] fs: Convert aops->write_begin to take a folio git bisect bad cdc4ad36a871b7ac43fcc6b2891058d332ce60ce # first bad commit: [cdc4ad36a871b7ac43fcc6b2891058d332ce60ce] fs: Convert aops->write_begin to take a folio Thanks, Ryan