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 06EBEC021B2 for ; Sat, 22 Feb 2025 18:44:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 409696B007B; Sat, 22 Feb 2025 13:44:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B9566B0082; Sat, 22 Feb 2025 13:44:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 25A586B0083; Sat, 22 Feb 2025 13:44:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 06C1A6B007B for ; Sat, 22 Feb 2025 13:44:03 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id B0CA9A3652 for ; Sat, 22 Feb 2025 18:44:02 +0000 (UTC) X-FDA: 83148455124.28.D3CADCF Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) by imf18.hostedemail.com (Postfix) with ESMTP id BBEE51C000A for ; Sat, 22 Feb 2025 18:44:00 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OZ7Q8hTS; spf=pass (imf18.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.178 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740249840; 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:dkim-signature; bh=E+jmeUiRFgrLTZopYI9v80YSYwCYyzfjXIRGcBiLAVw=; b=6Ky9xoYp9d++uNC45ye1+TKGAPLG5rxhMAXgNkmKIn+KMgPtxTaUVNB6DsElRm85MdYRPX I3S/+R6fw8E3G7tK/VYKBTPd41cyipsuxfNh2Iw8T1yJt6YpSiV7G6wn6LEFo/h8/2S0lb I5vjfDLEzyQXFf/jmsMd6FjIq0Z9Mwk= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OZ7Q8hTS; spf=pass (imf18.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.178 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740249840; a=rsa-sha256; cv=none; b=qnLVxEAsbPny0R7bynaUv/cDpawtltMbm0dlBP5f9FbgKlObxl9hhCpFcCVEtLgb0gMalG Xr+EFsaAukTz/hw+vmNbE6p+GpBP7Zw7x6k33DMuAEBYzS+fxsWbU8UApANATNYEsakpUU 544JQ1XaYWgj569GJ+coUP4+VMpe/Dc= Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-307bc125e2eso29537541fa.3 for ; Sat, 22 Feb 2025 10:44:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740249839; x=1740854639; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=E+jmeUiRFgrLTZopYI9v80YSYwCYyzfjXIRGcBiLAVw=; b=OZ7Q8hTS+pat+iDQ2OJ4QeOIraUvMOYX1rV6/JHf/u4VcRXescL4x0aWlDh3qYK0lD fvN3XzFhWV4/Nxu1SkIX9cXGotpO21nR3N5GqGVV+i7P5yjdUhXxXd3nRKiKEkLD3lmQ fk6P1WxspVwB8l0/7a1g/0Gq3ZwYY6uiHQkBfFsskS52JjQpEzbe5BIisNfz93yFsy55 NGrDGiSm6awbcczpHZZZwVP+DuCBjblvhzngsno7Hgev1EGNMt23ma1s10bv8Vr+e0IM wb7JKJTZwVvOJC7rmSE+CfLqilYJZKvzTLQeF2+1pfLnZeqyzQq8FOKyjJtaLvwlNjqc tCfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740249839; x=1740854639; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=E+jmeUiRFgrLTZopYI9v80YSYwCYyzfjXIRGcBiLAVw=; b=WLUL7dzmqj9jEytMmhL2QW2t6I7le6r9FPrdgT8vz75igQb6dWHZFn2LikUSbSxZdX WaAz+t1vPPJsXeRKXdQuVeg2dW1SDam8PPgBMfBqYVF6jpKG4GvfJSSfWFEghpZkAJ0c zOocbrf7MLFGajB0rc0KZg/DMVa+Mk9lcRiTwFY9zp84YGs6qDQNp6VeX4ysKv7P8pvm d+j+2azBrqr6DWXS0CvH4ddPzpD72SB/OEig0T3xeCqhvZyqTXW/vb0nTir5guRDuw2Z sg9U6NAslBG8w7JEG19J58pCxtlETfB0mlmKWThMGtbTgNz2Wtr2ZCm/UkIFIBJNENqR afYQ== X-Forwarded-Encrypted: i=1; AJvYcCUnC5t9c4y8IhcikezSFwsaYhvDn30/GszLFQWyRaGVsF7PGmOOPvi9vfTL/iR72z5eX6u3zrv2Cg==@kvack.org X-Gm-Message-State: AOJu0Yyh4FSRPmDX4hl/16bwCMgYTIgJJmi/v7SmKdFvNpNhOMtLmHMC sZGQL5nDFS/OiV15rTrFUdJPFTyBP42cTHUg7n//oBmE4VYkfD6+95fgX6B6+1R4zPSBOtq3B7v vkgBBng3hi5xL9T5a2g/8xmCc2k8= X-Gm-Gg: ASbGnctFKANTowhhUMxMxGG2O7sguSwGBJAcwsgBXX17R+RFht/rgIdYcihQJY0Eb7T qSONJX+g+pkL6bdbGlKo3heDdC7c4gPeRycASQo9wDVeu/GeNeyCxBzY0kmGPuFkwtyuYAECr2c qa2o7tTBU= X-Google-Smtp-Source: AGHT+IHVnRQdOCRBMeRYt98eC4fNCl4k6Xa1RLOox2zKGp3H+ftnrThhe7xLnLL/s7EE5e/CTGvBlnh+EdQX7U/0Dk8= X-Received: by 2002:a2e:9416:0:b0:300:38ff:f8de with SMTP id 38308e7fff4ca-30a598909d5mr26356111fa.16.1740249838510; Sat, 22 Feb 2025 10:43:58 -0800 (PST) MIME-Version: 1.0 References: <20250222160850.505274-1-shikemeng@huaweicloud.com> <20250222160850.505274-4-shikemeng@huaweicloud.com> In-Reply-To: <20250222160850.505274-4-shikemeng@huaweicloud.com> From: Kairui Song Date: Sun, 23 Feb 2025 02:43:42 +0800 X-Gm-Features: AWEUYZlcPWRlcwjN0BHXG8TxtcCkPpE5iDcq2AJ1DErFnAQonwkp3WiXwC8-bmc Message-ID: Subject: Re: [PATCH 3/6] mm, swap: avoid BUG_ON in relocate_cluster() To: Kemeng Shi Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: dyycuujcrygjizmesmq6iduysja4tf4r X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: BBEE51C000A X-HE-Tag: 1740249840-117610 X-HE-Meta: U2FsdGVkX1/Z/vcSpB9bMnkf/kWOPfHQusBWfLZHnuvA9tuPkAZsC+SATt9uPOqV1j++ruqG729+G3/Bbf5Rwg872gtHZ1eOkVjk2y7gc5JAPiaDUGF+erzIjdQgdWj/xs1IVwdX8FM2EZ1EFOb5iKz2JdAF30Flam09bvxMz91ybxPQHSlTUUBOQ+i/o8YNHnNb71pZnSeWsubmaAMOAAnwwxkkVaKpO4FxZrN/nBHxIYv0htjvof0S0AZ/7NWUwmBL9txYXlphe+97z8cNZk9IoUGAqrFTbkRFRszelVbzF45V2q/1pGuNmnaRCJSoiWTXXs2yLJ1ogKPiTgsjREB3+ZWhgBmqKh5mQ+5JVQaqlbsfF7Y8kCQ5j/X6mBCrU7lARYSW4QZbGnrPcydXM6MIFCEg25rUpMcOKffHwqul2TeMvv85W0LjFPNu9d32rAj0fbjMGVhp4wGubG9QazTNs705sbOLH/ZhmnC9zrXBe0iJSGnjoRUBptLvSUswmVMPHCOIAtKxa9LNONhWttpbYE9By1X7nzTZrH2WXgSM0C11xRsV96HWw8rcYF18LsC+sv+AB6/imdJxxXJmmutAKoUl6jWKiYZPfdTxB9q8uDfMtx0XpAjd19UY07DvnYTjp3ys6hSqsGh6yxIQw61tV2v94yv7UXmOUp/4tRI5wY7Yq49vwNxtXVndZveMS45CTqaagpFyeQeS8j7ZVIibF59sUL/b0I0P0uCL0qdAcb6A80AI08KgmEkLfkLuipZRxrcKRwgrKpubuQN0v8ORJ6pl2nBaMnBMIAUY1puV2CYmDHbqWrKmcYXoy9SkuIDPV+v4/l652PXKRWWVgmxYBxO5KmCuxtevIgphoN/ifLOhOTPjZP8xvh05rBiX4TUtTnI9HQ390dTK9a7/uyWCN4nI+P10oEc1iM6y9Paihkg8PzYNCGDVuc7kl5fIBWtK+RY9BtddszVN9Ia HqFTMMPQ ursviZwH4fpbYUsmXzIRRwolNhql8+PCVWwpU7P6Hg0AyqnALWOnFp5Yu4aA3hvC9Tya0ptLy8Dt+0fGM6lEfGtJ/c3XCw96E9iWV1/HgAI2g2asluvBVeoMxF7KjsJe4V7kNMUYxWhQsdpojiKe3ivll0KOPS0rpXK9xOIQ4RNERIrvjGUA7ToQMMQi2bxez/jaBnlNIehHaewm7r99mcdf7Y56r7J4zpW3UuVHIDAfNpDEn+7pPFvxBFZsWJmkeiSLcOn6W6hpCIOiabw+dhrz/tgkmGYLxuSPy4P4X6xbkzceRhLu0RmIw1KtM6MdJELef+y6i8SxwEbbiSWeakp1FGJd12xRAFtiYEd4xaUWzWvGAuLHcSDuvhu+819dv/0W58fiX1Jc5ntZq2ac9FlBo7i+ca0QblI6W X-Bogosity: Ham, tests=bogofilter, spamicity=0.000465, 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 Sat, Feb 22, 2025 at 3:12=E2=80=AFPM Kemeng Shi wrote: > > If allocation is racy with swapoff, we may call free_cluster for cluster > already in free list and trigger bug on as following: Maybe capitalize this "bug on" to BUG_ON to be consistent with the title. > Allocation Swapoff > cluster_alloc_swap_entry > ... > /* may get a free cluster with offset */ > offset =3D xxx; > if (offset) > ci =3D lock_cluster(si, offset); > > ... > del_from_avail_list(p, true); > si->flags &=3D ~SWP_WRITEOK; > > alloc_swap_scan_cluster(si, ci, ...) > ... > /* failed to alloc entry from free entry */ > if (!cluster_alloc_range(...)) > break; > ... > /* add back a free cluster */ > relocate_cluster(si, ci); > if (!ci->count) > free_cluster(si, ci); > VM_BUG_ON(ci->flags =3D=3D CLUSTER_FLAG_FREE); > > Despite bug_on could be triggered, call free_cluster() for free cluster > only move cluster to tail of list and should be fine. > > Check cluster is not free before calling free_cluster() in > relocate_cluster() to avoid bug_on. Same here. > > Fixes: 3b644773eefda ("mm, swap: reduce contention on device lock") > Signed-off-by: Kemeng Shi > --- > mm/swapfile.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/swapfile.c b/mm/swapfile.c > index 425126c0a07d..fc45b9d56639 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -653,7 +653,8 @@ static void relocate_cluster(struct swap_info_struct = *si, > return; > > if (!ci->count) { > - free_cluster(si, ci); > + if (ci->flags !=3D CLUSTER_FLAG_FREE) > + free_cluster(si, ci); > } else if (ci->count !=3D SWAPFILE_CLUSTER) { > if (ci->flags !=3D CLUSTER_FLAG_FRAG) > move_cluster(si, ci, &si->frag_clusters[ci->order= ], > -- > 2.30.0 Thanks, other than minor commit message issue: Reviewed-by: Kairui Song