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 8C656D12D55 for ; Sun, 10 Nov 2024 21:11:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E22166B0085; Sun, 10 Nov 2024 16:11:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DD2BC6B0088; Sun, 10 Nov 2024 16:11:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C99556B0089; Sun, 10 Nov 2024 16:11:28 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id ABEC56B0085 for ; Sun, 10 Nov 2024 16:11:28 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 2A34216155F for ; Sun, 10 Nov 2024 21:11:28 +0000 (UTC) X-FDA: 82771429902.06.93D2ECF Received: from mail-oa1-f41.google.com (mail-oa1-f41.google.com [209.85.160.41]) by imf11.hostedemail.com (Postfix) with ESMTP id 4E44340006 for ; Sun, 10 Nov 2024 21:10:37 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=TKNpQBnA; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf11.hostedemail.com: domain of hughd@google.com designates 209.85.160.41 as permitted sender) smtp.mailfrom=hughd@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731272912; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wm7lqc6cjJtGfdaDUhdk/4pQrGz/TeIdmCREqGvtLL4=; b=UvFDsFuWA6TzhravY+WbhoT/zG5GTcXUF2g2xap/2JulazG5o+/eFufibkIAEUtrX6SijO LfvW/qxodxNTmi3XJHMGkTH1qECEtpjBTwMImRSsXRcgies2Kw/jkIoXwb/HNnJW5YmkD2 UBpCX30Qc0Jdj7+nFZ4QipWRScsPa+s= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=TKNpQBnA; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf11.hostedemail.com: domain of hughd@google.com designates 209.85.160.41 as permitted sender) smtp.mailfrom=hughd@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731272912; a=rsa-sha256; cv=none; b=cAk47Hu0TKuWGj5ydOYbVyko7dfA9KwAmsr3+U9T985bCsdmEo8W/B3znzeP4NDmgoKvpF t2QmiyL5VozS3fg/M5V/bDWeyYlrlEfM+Vh+djnNMoJvQJ4Hr5OhgRrtgCDT/4/dAGqrR7 KUKh7GksFdhtAfZLzPzbQPLUJ+PUjR4= Received: by mail-oa1-f41.google.com with SMTP id 586e51a60fabf-28c654c9e79so2974114fac.0 for ; Sun, 10 Nov 2024 13:11:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1731273085; x=1731877885; darn=kvack.org; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=wm7lqc6cjJtGfdaDUhdk/4pQrGz/TeIdmCREqGvtLL4=; b=TKNpQBnA1ohAvxiUWepI6gwSmJzKqpCWgzVBN9c1E4MhTAMPFkewcP3D+uQXV6tcLr jmaeNEDUSMp1/g1RiKgJ2h7VZKPuRMUWVyAEY6HvlXJgW13VttuXsVerhPyUnkTd4rx+ NsdMKqY4/wRPXuyxLOw1DyrTF57Z7XZAjxcDpxKC1RJV2A7GEs69BU1ca3mIxhMBXNv/ XezEypOLxZtJJfc0yUTfAKbUrYIYazSonb9jf8vJLzr32txGpEIFFfdi7ledRvKLl4EQ ERGpfXR2+9elfbzLn+Yb1Sm0YZWSeTU0RrWeJCsci7vI1/FtWoSttPjSyKOz0I7znzxH 2f7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731273085; x=1731877885; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wm7lqc6cjJtGfdaDUhdk/4pQrGz/TeIdmCREqGvtLL4=; b=cbhlP1pIecWJpAQuborWF3ZZlgYLX8c/Zcjno4+78IOrsADH2YjzD1Va1nxqDJPqki Jjq1o59wkwElFwylRj26J8K9ayb21Wq+tkbR2pPY4sR3ikJTOlApNbrk8L9cnh0v71XR Hyy9zOBaB/A1uSbK/JSDCsFAeLSr4Jyqw1H7Yep3t4XguGM2sOIxeTzFlcIgoBr22uhj JeoHhtUHH5x1B1Mn++fzRvMdu1Q5A6Wi551Ff4Zj/eM1JPnFrC62cHS+yM/0PDENAd8i wsBzxW7j8bZCNVg2baWDhtSKPblEhE0NeF2o+3OqQmY0bv6j+cFa1jtcp4OGYzep+ElZ 0cww== X-Forwarded-Encrypted: i=1; AJvYcCVgP5rYClJRIBc8Kxt5d+KYNnffLxi13wmkXLL+acylRcQKkC+s8P82xfnvz51nJqBkYhdKA0lbiw==@kvack.org X-Gm-Message-State: AOJu0Yy7m4C9B8i2gQeqoyY2rc0oqiLvEvu+4jcxBVzzAJmLbBIhMIJN x8WxQOSktlckDfQc0WLnUs2Cv7r07xZQYuw0zgtWn+jZ3N2W5zUDjB3NZwJkPw== X-Google-Smtp-Source: AGHT+IF85Gy4fzCNG92ic3IycLYyvuh/85UvmtrWOu0VB2aYEskhi8P2P3+nsuvrZAMyj67x1wyViA== X-Received: by 2002:a05:6870:d60b:b0:260:ffc8:6d9f with SMTP id 586e51a60fabf-295606ff3b5mr5639440fac.19.1731273085318; Sun, 10 Nov 2024 13:11:25 -0800 (PST) Received: from darker.attlocal.net (172-10-233-147.lightspeed.sntcca.sbcglobal.net. [172.10.233.147]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-29546edff25sm2414735fac.37.2024.11.10.13.11.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Nov 2024 13:11:24 -0800 (PST) Date: Sun, 10 Nov 2024 13:11:21 -0800 (PST) From: Hugh Dickins To: Andrew Morton cc: Zi Yan , Usama Arif , Yang Shi , Wei Yang , "Kirill A. Shutemov" , Matthew Wilcox , David Hildenbrand , Johannes Weiner , Baolin Wang , Barry Song , Kefeng Wang , Ryan Roberts , Nhat Pham , Chris Li , Shakeel Butt , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH hotfix] mm/thp: fix deferred split queue not partially_mapped: fix In-Reply-To: <6fcaaa72-4ef6-ebda-cf37-b6f49874d966@google.com> Message-ID: <3c995a30-31ce-0998-1b9f-3a2cb9354c91@google.com> References: <81e34a8b-113a-0701-740e-2135c97eb1d7@google.com> <6fcaaa72-4ef6-ebda-cf37-b6f49874d966@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 4E44340006 X-Stat-Signature: cdcpt71jdkr5er74j8ieabpk4k9mhoky X-Rspam-User: X-HE-Tag: 1731273037-620376 X-HE-Meta: U2FsdGVkX1+6axRS+g4svjXOUcNz1vLT2oVZ1/kL/3IEBC4BdFWVkpxKDpF6JLNtTvLNrVS0W5pULqB7Kcrtaftr8bSb3vXyI/57S1hQ8P5DDYQPEciG7SeXz/6PKnFWhZr0lN7oOYLA7X82HQZY9BlnP4w241qvi9wEg69OtdHX2wdym2/Dl9/j8ZePav03HFX4/KJxY+IDaULW6bfY+aE7zqKNS6tB50kOKIIUhB5nMPiLWuTU9OqQJ2+WXxY/y67bD/E7oSFIDoLfOJAzM2PxwuFSz6sa1yYfOIZ6qkP2cfrCH0JAlo5XTGOqSSZfR131c96Bunsb3y5SLy0yfO98gENTMFtdzjHr1Nra6v6EPPM8DrqMh03K6Bhnvd/pLFgrKdyqC5nJWBfu5+RKSp5wpbCvDmG+0eHTyM7WOmste6g410j3vn0YSMPSbbPsAGOneC1iamT9n9uAObf+EsY5EwcDnxP5XSU8LRhDQ/rYyGCrfKbCJlwAPh1vpxd94tbRLQ35fnUbP97Z4ZOxXNIudJbp0WJhj+Hgpp6jL/jaVD117CR/YyQf5UieG/n6oIKTeLAvQh8T6YkJ5gdq+HcwA/N5TN+RXRLDGtcKoO133V4hTcGYeJxHFBHBIfA5E/nOfSu/F9mJiQm1tXUTecjwvpjtdlCIiryus1oVIf2m44cKCM8d3wPyNtIXjagyRtY1VpOLju9CM0F7t/I6a4P6sWOYKvmwWz8uf3xZUWeIkh28u91/YjeZZ4qtyWhZ25d8ekVJxQfC4slNWmpZWMck5VBjrsZW7bef59FxQ3lh7F1c3rqk4GmpaeBCqhRjYjnVw91Td6dqq8mopHbDgEl6YU3xT1FiF1b4ZKso5fIP2bN74biCQWeA3EfUMMkvTSQ/3e5VvgwJ0SBGgdTA90+ndN/1gohx+Y5EmyGCIaSRiBQHjEMG9FDuyESu2OEt5vsbHxwgdGgX0nlhxNo 3OqEpKW6 b/92pxZ6IWG0xfNZdZLKBgs/ARmRZpwEbeiV/XTqB/5r2zkVAw0wmaXc+148ySJj3E7HHh2tyPU78f/qFrgdWT+OuRzQk3rNpPCxekfLLk2+KxAS7q/WXUU2DnqRgBHjg8iE5DJdVlstLapmUonXWrTP2f45lFBv/RRG6ionseM5tNXQYnTnF7UO8CQ+1Gk1YPQO5WU611YDuvXURTHi3RlFsCgbspGQ+2ZcPyyEwfbvD3L1Uv5tmBzHi64lvcMC3mLDI/carxsmQU2g7aukLtJALTzp3VQr8nCCDYoriireCfDnaPyfbGL/V1HTD9BpXa9jgRx9Z5KWZmNiv4JQugnkZRYmlpbepx26bsCX7FUxVIFdspXesdg9F+cbdsh+/wy3N9o8iX2DuNzXZlUid5vGfv3k439fyY1gcUCr6/QRkIr6SQ6WFOQTCs52KbcrQnbyoRYiXFUT54D28trJccJ+siw== 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: Though even more elusive than before, list_del corruption has still been seen on THP's deferred split queue. The idea in commit e66f3185fa04 was right, but its implementation wrong. The context omitted an important comment just before the critical test: "split_folio() removes folio from list on success." In ignoring that comment, when a THP split succeeded, the code went on to release the preceding safe folio, preserving instead an irrelevant (formerly head) folio: which gives no safety because it's not on the list. Fix the logic. Fixes: e66f3185fa04 ("mm/thp: fix deferred split queue not partially_mapped") Signed-off-by: Hugh Dickins --- mm/huge_memory.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 03fd4bc39ea1..5734d5d5060f 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -3790,7 +3790,9 @@ static unsigned long deferred_split_scan(struct shrinker *shrink, * in the case it was underused, then consider it used and * don't add it back to split_queue. */ - if (!did_split && !folio_test_partially_mapped(folio)) { + if (did_split) { + ; /* folio already removed from list */ + } else if (!folio_test_partially_mapped(folio)) { list_del_init(&folio->_deferred_list); removed++; } else { -- 2.35.3