From nobody Mon Sep 28 15:34:39 2026 Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FF4C43CEE9 for ; Thu, 20 Aug 2026 11:55:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787226920; cv=none; b=k4XxkEuZhyN2alp2ljjLWebMCWnKxSMOP7cbQ5Bux6INCIl9MUthuht2FAFXTwap0x/LGusZyNzJQhdeYdfXVLq7isdPwaiak5vZQhNyXXSX2pVBQJbWWH6Y+DsAy2IDzeoO4bH1wAD7mXXTz/aVwHnXxfgk3VSTpbJhX5OVzPw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787226920; c=relaxed/simple; bh=PgSDQ/uhGdgvQp/0EzfezIiUhTr3VcAVNj1BoCuiXhI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=bnDnbnPLCV4Uzb8P6lokrhdJLnxi01nU+3G1xPo/qdlSI+Ic2utNUsESwSUx+JNAn6QNUbQIgS16MbLTbtLBqyfQuoi7C9uHIRJlxxpjLFOonJCGzkqxA3DjfHdmFXOXQScM2tzjZkY/2aWZ5v/tKIJTOom3lkgxtNAfDfKLJqM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.177]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4hQhgf5Kh8zKHMRJ for ; Thu, 20 Aug 2026 19:54:38 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.112]) by mail.maildlp.com (Postfix) with ESMTP id 6BACA40594 for ; Thu, 20 Aug 2026 19:55:09 +0800 (CST) Received: from huaweicloud.com (unknown [10.166.163.161]) by APP1 (Coremail) with UTF8SMTPA id cCh0CgAH99Ib64ZqI3IEDA--.64911S3; Thu, 20 Aug 2026 19:55:09 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, chrisl@kernel.org, kasong@tencent.com, nphamcs@gmail.com, baoquan.he@linux.dev, youngjun.park@lge.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Kemeng Shi Subject: [PATCH v2 1/4] mm, swap: Fix potential NULL dereference when trying a sleep table allocation Date: Thu, 20 Aug 2026 19:55:02 +0800 Message-Id: <20260820115505.20027-2-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20260820115505.20027-1-shikemeng@huaweicloud.com> References: <20260820115505.20027-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: cCh0CgAH99Ib64ZqI3IEDA--.64911S3 X-Coremail-Antispam: 1UD129KBjvJXoWxJry7uw1DJF4kJw1UKry7GFg_yoW8CF18pF n5KF98Kr45Jrn8Gr4DA3Wqq345Gw409ryDGa1fWw1Iv39xXr4xWrnFyrZ0vF98CFZ7Jryq grWjqw1Uua1v93JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUBl14x267AKxVW5JVWrJwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_Jr4l82xGYIkIc2 x26xkF7I0E14v26r1I6r4UM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0 Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1l84 ACjcxK6I8E87Iv67AKxVWxJr0_GcWl84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AI xVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20x vE14v26r1Y6r17McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xv r2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r1q6r43Mx AIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_ Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwI xGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8JVWx JwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcV C2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7VUb2g4DUUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ The root cause of this issue is because multi-tables are updated in non atomic context. To be more specific, the issue could be triggerred as following: swap_alloc_fast swap_cluster_populate() /* Try a sleep allocation */ spin_unlock(&ci->lock); swap_cluster_alloc_table() rcu_assign_pointer(ci->table, table); ci =3D swap_cluster_lock(si, offset) cluster_is_usable(ci, order=EF=BC=89 if (!cluster_table_is_alloced(ci)) // ok alloc_swap_scan_cluster() cluster_scan_range() __swap_table_get() /* free table when more table allocation fails */ ci->memcg_table =3D kzalloc_obj(*ci->memcg_table, gfp); if (!ci->memcg_table) swap_cluster_free_table() rcu_assign_pointer(ci->table, NULL); table =3D rcu_dereference_check(ci->table, lockdep_is_held(&ci->lock)); atomic_long_read(&table[off]); // NULL dereference Fix the issue by making tables visible at end of swap_cluster_populate(). Fixes: 2fe7a6f5024b8 ("mm/memcg, swap: store cgroup id in cluster table dir= ectly") Signed-off-by: Kemeng Shi --- mm/swapfile.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 615d90867111..4561c864f806 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -466,8 +466,6 @@ static int swap_cluster_alloc_table(struct swap_cluster= _info *ci, gfp_t gfp) if (!table) return -ENOMEM; =20 - rcu_assign_pointer(ci->table, table); - #ifdef CONFIG_MEMCG if (!mem_cgroup_disabled()) { VM_WARN_ON_ONCE(ci->memcg_table); @@ -487,6 +485,12 @@ static int swap_cluster_alloc_table(struct swap_cluste= r_info *ci, gfp_t gfp) return -ENOMEM; } #endif + + /* + * Make tables visible to cluster_is_usable() after everything is + * ready. + */ + rcu_assign_pointer(ci->table, table); return 0; } =20 --=20 2.36.1 From nobody Mon Sep 28 15:34:39 2026 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 67E8B43CE47 for ; Thu, 20 Aug 2026 11:55:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787226916; cv=none; b=Kx1H4F0TRm8pgtEkk7OozrLJIYG26P9lULJ8uZH0GbdSfpiay4ucwqSGjZs7Vz0qG0Bg9uN8jziA9H+7+o99rYS5Ve6EykEz8Gzhulh1lX9vBAw5rH6SAwHsvn1ryba65k2NiQlSdQ985RxaI4qcpRf+PX87Hf08rVdgpAshctI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787226916; c=relaxed/simple; bh=ZoqVG0b6PhA7qAaR+Lrbrn5kC0tYZC9FgRic+aU3JHk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fe+3wYvWNPOltXG9OroliY1AQFpykaTubjqM+L8XPWQH0IPHLE6DaBT2PBKwpVTfOqusfw2N0P6nN8chnX8/ofPVhbzQl64U4Lj7P3yUkig10Ouwwf2AJnPr7HPIgDNJZ/ReT+Uw4Q/jzy6yJAOdOscWM37fEKThXFeglRbBRDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.170]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4hQhgv1JqSzYQtrG for ; Thu, 20 Aug 2026 19:54:51 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.112]) by mail.maildlp.com (Postfix) with ESMTP id DEACB4056D for ; Thu, 20 Aug 2026 19:55:09 +0800 (CST) Received: from huaweicloud.com (unknown [10.166.163.161]) by APP1 (Coremail) with UTF8SMTPA id cCh0CgAH99Ib64ZqI3IEDA--.64911S4; Thu, 20 Aug 2026 19:55:09 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, chrisl@kernel.org, kasong@tencent.com, nphamcs@gmail.com, baoquan.he@linux.dev, youngjun.park@lge.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Kemeng Shi , Luiz Capitulino Subject: [PATCH v2 2/4] mm, swap: Move setup_swap_clusters_info() after SWP_SOLIDSTATE initialization Date: Thu, 20 Aug 2026 19:55:03 +0800 Message-Id: <20260820115505.20027-3-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20260820115505.20027-1-shikemeng@huaweicloud.com> References: <20260820115505.20027-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: cCh0CgAH99Ib64ZqI3IEDA--.64911S4 X-Coremail-Antispam: 1UD129KBjvJXoW7urWrJFy7Zr4xur4UXF13Arb_yoW8XryfpF n3Was8Cr48Jr1fWw48Zw1UWa4rWwnYkF1UJanxXr43uwn7Jr10gryft3Z8Arn8Grn5AFWq gw1Iy34xuF1q9wUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUm014x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_Jryl82xGYIkIc2 x26xkF7I0E14v26r4j6ryUM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0 Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr0_Gr1UM2 8EF7xvwVC2z280aVAFwI0_Cr1j6rxdM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq3wAS 0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2 IY67AKxVWUXVWUAwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0 Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwACI402YVCY1x02628vn2kIc2 xKxwCY1x0262kKe7AKxVWUtVW8ZwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWU JVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67 kF1VAFwI0_Jw0_GFylIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY 6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0x vEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVj vjDU0xZFpf9x0JUI1v3UUUUU= X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" In setup_swap_clusters_info(), SWP_SOLIDSTATE is used to decide global_cluster allocation. Move setup_swap_clusters_info() after SWP_SOLIDSTATE initialization to avoid unneeded global_cluster allocation. Fixes: 451c6326105b2 ("mm, swap: clean up swapon process and locking") Signed-off-by: Kemeng Shi Reviewed-by: Luiz Capitulino Acked-by: Kairui Song --- mm/swapfile.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 4561c864f806..e9554c28e6eb 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -3592,11 +3592,6 @@ SYSCALL_DEFINE2(swapon, const char __user *, special= file, int, swap_flags) =20 maxpages =3D si->max; =20 - /* Set up the swap cluster info */ - error =3D setup_swap_clusters_info(si, swap_header, maxpages); - if (error) - goto bad_swap_unlock_inode; - if (si->bdev && bdev_stable_writes(si->bdev)) si->flags |=3D SWP_STABLE_WRITES; =20 @@ -3610,6 +3605,14 @@ SYSCALL_DEFINE2(swapon, const char __user *, special= file, int, swap_flags) inced_nr_rotate_swap =3D true; } =20 + /* + * Set up the swap cluster info after SWP_ flags handling as + * setup_swap_clusters_info() checks SWP_SOLIDSTATE. + */ + error =3D setup_swap_clusters_info(si, swap_header, maxpages); + if (error) + goto bad_swap_unlock_inode; + if ((swap_flags & SWAP_FLAG_DISCARD) && si->bdev && bdev_max_discard_sectors(si->bdev)) { /* --=20 2.36.1 From nobody Mon Sep 28 15:34:39 2026 Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98F9B43E061 for ; Thu, 20 Aug 2026 11:55:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787226924; cv=none; b=uXrKXPh1aXLOlJ0lOKei8sqSm1UJjqvzo5K0HWKwx5bL4+i7peG4kqU7UpmCIMIiFCLU36+vWSHLMljGcyKU59Lx4j0y+7kpwKR/Pg/W6Fj+10/1A25vwZRVAasugHB77pEd0o4yqxEN6p6JZgS7XPbDgzhMS1o5ZuI1ajB8SY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787226924; c=relaxed/simple; bh=2Agkqs0tU6zF7yOuzowavy3w4DvyvpSM0AG/iTc1udg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cxSLHDo27G2HEPf/RxaItF7nmNiupPX1KY4WFrxzNOaYZa9VzFfNrFdycUKKIR+HiOe2oqEWeEj9VPqdLhowGIFYjQ1fqNAJlsK7bGlyENSG1Rv8RVunQQlcjIkDWvdlVwVqlaqt8BsYFmRZ4ChSk0M94ZHz+bXUz2qOT53Onw0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.177]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4hQhgg5kwkzKHMT4 for ; Thu, 20 Aug 2026 19:54:39 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.112]) by mail.maildlp.com (Postfix) with ESMTP id 778CD4058F for ; Thu, 20 Aug 2026 19:55:10 +0800 (CST) Received: from huaweicloud.com (unknown [10.166.163.161]) by APP1 (Coremail) with UTF8SMTPA id cCh0CgAH99Ib64ZqI3IEDA--.64911S5; Thu, 20 Aug 2026 19:55:10 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, chrisl@kernel.org, kasong@tencent.com, nphamcs@gmail.com, baoquan.he@linux.dev, youngjun.park@lge.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Kemeng Shi Subject: [PATCH v2 3/4] mm, swap: return early from swap_extend_table_try_free() on first non-zero entry Date: Thu, 20 Aug 2026 19:55:04 +0800 Message-Id: <20260820115505.20027-4-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20260820115505.20027-1-shikemeng@huaweicloud.com> References: <20260820115505.20027-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: cCh0CgAH99Ib64ZqI3IEDA--.64911S5 X-Coremail-Antispam: 1UD129KBjvdXoWrtw1Dur1rAF1rKr1UCryDZFb_yoWDCwc_Ca 40vws3JFWaqrn7X39rta47Xr1fKr4fKF1rWF1ktFy2yry5X3y5uFnrXF1Duw4rKa1jyF93 A3Wvvr1akwsrtjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUb68FF20E14v26rWj6s0DM7CY07I20VC2zVCF04k26cxKx2IYs7xG 6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI8067AKxVWUWwA2048vs2IY02 0Ec7CjxVAFwI0_Xr0E3s1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xv wVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVWxJVW8Jr1l84 ACjcxK6I8E87Iv67AKxVWxJr0_GcWl84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AI xVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20x vE14v26r1Y6r17McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xv r2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r1q6r43Mx AIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_ Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwI xGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8JVWx JwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcV C2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7VUbN6pPUUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" Return immediately when the first non-zero swap count is found as any non-zero swap count prevents freeing extend_table and further iteration is pointless. Signed-off-by: Kemeng Shi Reviewed-by: Youngjun Park Acked-by: Kairui Song --- mm/swapfile.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index e9554c28e6eb..9f43ab43b927 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1515,20 +1515,17 @@ int swap_retry_table_alloc(swp_entry_t entry, gfp_t= gfp) static void swap_extend_table_try_free(struct swap_cluster_info *ci) { unsigned long i; - bool can_free =3D true; =20 if (!ci->extend_table) return; =20 for (i =3D 0; i < SWAPFILE_CLUSTER; i++) { if (ci->extend_table[i]) - can_free =3D false; + return; } =20 - if (can_free) { - kfree(ci->extend_table); - ci->extend_table =3D NULL; - } + kfree(ci->extend_table); + ci->extend_table =3D NULL; } =20 /* Decrease the swap count of one slot, without freeing it */ --=20 2.36.1 From nobody Mon Sep 28 15:34:39 2026 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D5EE43CE4B for ; Thu, 20 Aug 2026 11:55:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787226916; cv=none; b=JXNbi4ZDU6m55d+Rv7jQaRiIdi3a3j7xGkM2FaBi7xeAxse3+3XRD4+ipJ7RnGDdnrM7J1XQbJcHbngbgsDFCIHtcYSdfkYgVEEEjhDQ5w8vMThCLuhW/bJxGVwXOB08EEWiQO6ZWbIc17wxv5bbatgTiABEiUaVFhOzprLm298= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787226916; c=relaxed/simple; bh=ERSSM2D94Y1XV6MEbD8IkWSsxNAU/F/JYTQNXII/4e0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=n797bpOiwFwKm7cnGSN3hF1pyr5lXY+pNtptFtOGycgcOU/qG1PFQ33hT151XXb640BEiuc7LZ0uUxSQ72enOMI+eTtQEWN+OgjE2uA49U6ieX6oyLe7bWYVwqtxBJiX/uS8RdL0AOTTiy2McUuW4wfQIFNs63fRb/a5NBwICzw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.198]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4hQhgw2CjlzYQtsr for ; Thu, 20 Aug 2026 19:54:52 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.112]) by mail.maildlp.com (Postfix) with ESMTP id 06937408A4 for ; Thu, 20 Aug 2026 19:55:11 +0800 (CST) Received: from huaweicloud.com (unknown [10.166.163.161]) by APP1 (Coremail) with UTF8SMTPA id cCh0CgAH99Ib64ZqI3IEDA--.64911S6; Thu, 20 Aug 2026 19:55:10 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, chrisl@kernel.org, kasong@tencent.com, nphamcs@gmail.com, baoquan.he@linux.dev, youngjun.park@lge.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Kemeng Shi Subject: [PATCH v2 4/4] mm, swap: Remove unneeded swap_extend_table_try_free() in swap_dup_entries_cluster() Date: Thu, 20 Aug 2026 19:55:05 +0800 Message-Id: <20260820115505.20027-5-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20260820115505.20027-1-shikemeng@huaweicloud.com> References: <20260820115505.20027-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: cCh0CgAH99Ib64ZqI3IEDA--.64911S6 X-Coremail-Antispam: 1UD129KBjvdXoWruw1rGrW7uF17KFyDAFWrZrb_yoWDZrb_Ca 95u3s7JrW5J3WkG3s7t3WIqrWvgrZYqr1Ykr1rtFnaya4UXFWruF17X3srA34Iq390v3s5 Aa1vvF1SyrZrGjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbD8FF20E14v26rWj6s0DM7CY07I20VC2zVCF04k26cxKx2IYs7xG 6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2 IY020Ec7CjxVAFwI0_Xr0E3s1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28E F7xvwVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVWxJVW8Jr 1l84ACjcxK6I8E87Iv67AKxVWxJr0_GcWl84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0D M2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjx v20xvE14v26r1Y6r17McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1l F7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r1q6r 43MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_ Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x 0EwIxGrwCI42IY6xIIjxv20xvE14v26r1I6r4UMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWx JVW8Jr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMI IF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUljgxUUUUU = X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" Since commit 0475fde0f68de ("mm, swap: avoid leaving unused extend table after alloc race"), extend table is always allocated when any swap count reach MAX - 1 and is always freed when swap count decrease to MAX - 1 or MAX - 2 with cluster lock held. So the extend table will always be freed properly when decrease swap count in __swap_cluster_put_entry(). So swap_extend_table_try_free() outside of __swap_cluster_put_entry() is unneeded and can be removed. Signed-off-by: Kemeng Shi Reviewed-by: Youngjun Park --- mm/swapfile.c | 1 - 1 file changed, 1 deletion(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 9f43ab43b927..9f829b008de1 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1717,7 +1717,6 @@ static int swap_dup_entries_cluster(struct swap_info_= struct *si, failed: while (ci_off-- > ci_start) __swap_cluster_put_entry(ci, ci_off); - swap_extend_table_try_free(ci); swap_cluster_unlock(ci); return err; } --=20 2.36.1