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 33D7EC61CE8 for ; Tue, 10 Jun 2025 01:02:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 69D146B007B; Mon, 9 Jun 2025 21:02:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 64E3B6B0088; Mon, 9 Jun 2025 21:02:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 564C36B0089; Mon, 9 Jun 2025 21:02:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 38A2D6B007B for ; Mon, 9 Jun 2025 21:02:13 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 426931A07E4 for ; Tue, 10 Jun 2025 01:02:12 +0000 (UTC) X-FDA: 83537689704.23.7046F83 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by imf24.hostedemail.com (Postfix) with ESMTP id B57C618000A for ; Tue, 10 Jun 2025 01:02:07 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf24.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749517330; 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; bh=aJhwPqk0RCdC8AswdpuiTvSyP6H7CeETr3uxDc8Spk0=; b=JWSjvP0f+EeWJ6MyTlxi4JRHQol8mmi5GVEzaGMx8tzkSdKiEZX1Zo6m08ABWHwFbLXjYW Ynrt5t5N7N5ddx8xnE6GvzFZJx7o7gDkqImbJ7/BqLZURJtCaSbJe7zxCOOObK/25i60tE D+EoGgQAgMLnE/JcsVP63+mcgNzF8IU= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf24.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749517330; a=rsa-sha256; cv=none; b=1yJTL+uF/v6spqfpc8hb5eQjV+OPyg/Z4k9ErNc+bvyMGJNwGv09mlsk2dyfvt8g82sPdU LerghtpY+dNUQufKjiUcLov2y02Sbs6S2JIYB1VtAvbycEIRgJNFRr2Hx/VytCSda7B2Og /tPdniKptUtTFQS+uhXmLpI6XsuKHkM= Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4bGVqv5xbHzYQvxD for ; Tue, 10 Jun 2025 09:02:03 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.128]) by mail.maildlp.com (Postfix) with ESMTP id D2DC21A0AD5 for ; Tue, 10 Jun 2025 09:02:02 +0800 (CST) Received: from [10.174.99.169] (unknown [10.174.99.169]) by APP4 (Coremail) with SMTP id gCh0CgDnSF0JhEdo4IIqPA--.56772S2; Tue, 10 Jun 2025 09:02:02 +0800 (CST) Subject: Re: [PATCH 1/7] mm: shmem: correctly pass alloced parameter to shmem_recalc_inode() to avoid WARN_ON() From: Kemeng Shi To: Baolin Wang , hughd@google.com, willy@infradead.org, akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org References: <20250605221037.7872-1-shikemeng@huaweicloud.com> <20250605221037.7872-2-shikemeng@huaweicloud.com> <3d07c68f-da11-43d8-a2da-6b200b2fa40a@linux.alibaba.com> <994283d9-2dc4-6887-5d46-247b834879b5@huaweicloud.com> Message-ID: <9e59f1f0-db3b-2182-4485-887ac7036bfd@huaweicloud.com> Date: Tue, 10 Jun 2025 09:02:01 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: <994283d9-2dc4-6887-5d46-247b834879b5@huaweicloud.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-CM-TRANSID:gCh0CgDnSF0JhEdo4IIqPA--.56772S2 X-Coremail-Antispam: 1UD129KBjvJXoWxAw4xuw4rWw1kWw45uw1Utrb_yoWrKF1rpr n5GFyDGr48JrZ7GF1xtr4kXry0qF4fAa1UJrnxAFyxKF47Gw18Kr13JrnFgr1DA34kAry7 tw1kK34IvayDCaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkEb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x 0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG 6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFV Cjc4AY6r1j6r4UM4x0Y48IcVAKI48JMxk0xIA0c2IEe2xFo4CEbIxvr21lc7CjxVAaw2AF wI0_JF0_Jw1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1D MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I 0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWU JVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07UK2N tUUUUU= X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspam-User: X-Rspamd-Queue-Id: B57C618000A X-Rspamd-Server: rspam09 X-Stat-Signature: cktg133xmdtmtgck5srdsj83fyj8nwpt X-HE-Tag: 1749517327-694830 X-HE-Meta: U2FsdGVkX1+9FU+qQD4GmxxEE8usBzqkz3URavl1Ej8mdEXewqenu+y0swscTTD4BjxtxDw4K8sfN4CKbYrt9kjAjDyAB9jAuv7UnIBtJAyYvr4CfGuWr+PXOEfAMoM1aHjMWpgnhOiu6pqtDWs8TgVKfZFpYFZVOYaZFABzAYRdBYqchX7x3+EgO/DVcKcP76gi0o7J6tP/KyGx//HdENlNbuAxC5P2n5Ok8CFNybKdohAu3KokeusBoJXZOHLPDVQtGJT1ds5Gq1nVBA9jKs8Vz4vXhe4rA2Xe7lpY4yvqcobG6sPthJweXjCyi9CWfIJr71b23sizJBV57/uJZJvsmzmDJ+SZ1Zs16PIRuQlxJE9u9LFbrd9XkxFsyo1F8boPv9CtR0Ze6h/lc1C8YjS8UvIg9X6b1STaV7dB6akK2oVmK+9CHm0eKnTKPPuqgAvcCQRFo4ikoTMyq53PZIZ4KYppuYfCbrVPjhOgGbAKd3B2yOOX4tZ0L8ykxeIPPWe0VzynPTq7Ahwkr/G55NjoRY3xx8E5gbbDfUff/ETMtcmrTzD4vmcDIepUDZyJtJ5tNibbZ6ntP3LfApfoUDMPbj/ObywdEfeeUMPyd2CGX6DUFx0jlK00OryYk0FukQ2qBU5ZJ2S8DXISV0A6Yy+zqyalr97dff7S2huY/iQ+SCiAESBxRvrq2cp4nqISGNwLo/Syisy2rQbfa1f/fdOOxqtNeeAbwwq+gxcLwpBhYS72jppi5yta3313Ev1P+pVjc/V8ZSUpa/XL7SmLmMEEXVa46eVr7PoFe+Y7Y/MrBx8kHe0Vo9s5SyShTEmYlMa3tFJ8427fV/cP0/j4zjPMp5YMKwy4MhZTeDeEzIa3OsByAld5uVNaqo7lhEcSB5Sv0tHbek99SzCQmvf5CpP87ULOzfn1XwogPj9N7djUN5nILZ9iWT68RoqwyONyzUw7PcUOo/79ZXhUO+v hKIoH4+K yvonACmC54G48th0OhYLS8sMlWpR+Lp9T/g8R+RbFNx66TlllvDGyCcsRu7qe+8NuTMlcC7wbQnHiaOgs07UPZfpU1+JzY+UANbxuODLanScrHXBqGcLadUkh2KG3jKbhdwdtV9jF2Iqv5Zx+bZ7pz4i2cidjPcGOzURMjcbODHRy61xPznPrmguszEG2L5mXJS35Ey+l5Jljfsd0ea/3JKQgQA== 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 6/9/2025 8:46 AM, Kemeng Shi wrote: > > > on 6/7/2025 2:11 PM, Baolin Wang wrote: >> >> >> On 2025/6/6 06:10, Kemeng Shi wrote: >>> As noted in the comments, we need to release block usage for swap entry >>> which was replaced with poisoned swap entry. However, no block usage is >>> actually freed by calling shmem_recalc_inode(inode, -nr_pages, -nr_pages). >>> Instead, call shmem_recalc_inode(inode, 0, -nr_pages) can correctly release >>> the block usage. >>> >>> Fixes: 6cec2b95dadf7 ("mm/shmem: fix infinite loop when swap in shmem error at swapoff time") >>> Signed-off-by: Kemeng Shi >>> --- >>>   mm/shmem.c | 2 +- >>>   1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/mm/shmem.c b/mm/shmem.c >>> index 4b42419ce6b2..e27d19867e03 100644 >>> --- a/mm/shmem.c >>> +++ b/mm/shmem.c >>> @@ -2145,7 +2145,7 @@ static void shmem_set_folio_swapin_error(struct inode *inode, pgoff_t index, >>>        * won't be 0 when inode is released and thus trigger WARN_ON(i_blocks) >>>        * in shmem_evict_inode(). >>>        */ >>> -    shmem_recalc_inode(inode, -nr_pages, -nr_pages); >>> +    shmem_recalc_inode(inode, 0, -nr_pages); >>>       swap_free_nr(swap, nr_pages); >>>   } >> >> Have you tested your patch? When I inject an error to test your patch, the following issue will be triggered:As all issues are hard to trigger, I only run some simple test to ensure normal > process is fine. Could you share how to inject the error to trigger following > issue. I will have a deep look. Thanks Sorry that the message is truncated. I mean I only test normal process is fine. Besides, I think there is another long-standing issue which could trigger the following issue. Here is the issue which is possible to blame: When swap entry is replaced with error entry in shmem_set_folio_swapin_error(), we will reduce info->swapped. Afterwards, error entry could be deleted in shmem_undo_range() and the info->swapped is reduced again. As a result, we reduce info->swapped twice for a single swap entry. A simple way to confirm this is injecting error to original code. Could you share how to trigger the issue or could you do the same test to original code? Thanks. >> >> [  127.173330] ------------[ cut here ]------------ >> [  127.173331] WARNING: CPU: 13 PID: 6860 at mm/shmem.c:1388 shmem_evict_inode+0xf0/0x348 >> [  127.173920] CPU: 13 UID: 0 PID: 6860 Comm: shmem_swapin_er Kdump: loaded Tainted: G            E       6.15.0-rc6+ #54 VOLUNTARY >> [  127.173925] pstate: 63401005 (nZCv daif +PAN -UAO +TCO +DIT +SSBS BTYPE=--) >> [  127.173927] pc : shmem_evict_inode+0xf0/0x348 >> [  127.173929] lr : shmem_evict_inode+0x68/0x348 >> [  127.173931] sp : ffff8000895639e0 >> [  127.173932] x29: ffff8000895639e0 x28: 0000000000000006 x27: ffff00013754bfc0 >> [  127.173935] x26: ffff800080d8f160 x25: 0000000000000006 x24: ffff0000c0aab440 >> [  127.173937] x23: ffff00013754b780 x22: ffff00013754b780 x21: ffff0000cbc9c6b0 >> [  127.173940] x20: ffff0000c0aab440 x19: ffff0000cbc9c700 x18: 0000000000000030 >> [  127.173942] x17: 0000ffffa1f4cfff x16: 0000000000000003 x15: 0000000000001000 >> [  127.173945] x14: 00000000ffffffff x13: 0000000000000004 x12: ffff800089563108 >> [  127.173947] x11: 0000000000000000 x10: 0000000000000002 x9 : ffff800080352080 >> [  127.173949] x8 : fffffffffffffffe x7 : ffff800089563700 x6 : 0000000000000001 >> [  127.173952] x5 : 0000000000000004 x4 : 0000000000000002 x3 : 0000000000000002 >> [  127.173954] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffffffffffffff80 >> [  127.173957] Call trace: >> [  127.173958]  shmem_evict_inode+0xf0/0x348 (P) >> [  127.173961]  evict+0x1c8/0x2c8 >> [  127.173964]  iput_final+0x84/0x1a0 >> [  127.173966]  iput.part.0+0xd0/0xf0 >> [  127.173968]  iput+0x20/0x38 >> [  127.173971]  dentry_unlink_inode+0xc0/0x158 >> [  127.173973]  __dentry_kill+0x80/0x248 >> [  127.173974]  dput+0xf0/0x240 >> [  127.173976]  __fput+0x120/0x2f0 >> [  127.173978]  ____fput+0x18/0x28 >> [  127.173980]  task_work_run+0x88/0x120 >> [  127.173983]  do_exit+0x198/0x3c0 >> [  127.173986]  do_group_exit+0x38/0xa0 >> [  127.173987]  get_signal+0x6ac/0x6b8 >> [  127.173990]  do_signal+0x100/0x208 >> [  127.173991]  do_notify_resume+0xc8/0x158 >> [  127.173994]  el0_da+0xbc/0xc0 >> [  127.173997]  el0t_64_sync_handler+0x70/0xc8 >> [  127.173999]  el0t_64_sync+0x154/0x158 >> [  127.174001] ---[ end trace 0000000000000000 ]--- >>