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 13360C47258 for ; Sun, 21 Jan 2024 02:01:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2EC736B0071; Sat, 20 Jan 2024 21:01:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 29B8F6B0072; Sat, 20 Jan 2024 21:01:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 18A076B0074; Sat, 20 Jan 2024 21:01:02 -0500 (EST) 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 09B916B0071 for ; Sat, 20 Jan 2024 21:01:02 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 768D31204EA for ; Sun, 21 Jan 2024 02:01:01 +0000 (UTC) X-FDA: 81701665122.04.C60D8A0 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf29.hostedemail.com (Postfix) with ESMTP id 70B38120018 for ; Sun, 21 Jan 2024 02:00:59 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=tdLgIXp8; spf=none (imf29.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1705802460; 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=HLCNlCM9SNZ4VTP38qjiENUfxLX9VsoUxQ8xlb18oT0=; b=QIfWDPhAOP2Qiw7HNbTe8soFZugHnQVa5s+o8sf1CF4zZp3YAusIW+XO0aCCFu2yqbEbRE NdoYZvjMEc0+xCztJRUEXfdgf4dfRkVKHHp2XDsFfV0+KJCiGBTH9iIxBE8vtiZ8a+Qfd4 6I0DHSPlOcTmE2Vs4+/JVs9SC44fZ0U= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1705802460; a=rsa-sha256; cv=none; b=ecGL8ttjaya5Lvzfx091/PIk+dEXZkoXOwoS67ILO+PyqvVoqMURlVNrgSpNHwe5d1vfQ1 4hXCcVRCNV/Kzf03ExWINJHncB0pQ04foGzyuAyxWGVWp3HRE86qjV5uOz7p0w5nYo4oUn TN9gifoFde1YVqq/hwXKDtUi1fixRvw= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=tdLgIXp8; spf=none (imf29.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=HLCNlCM9SNZ4VTP38qjiENUfxLX9VsoUxQ8xlb18oT0=; b=tdLgIXp8N/fO1VukgPa0DnhHSk Cmev6FM8OGEDdEp1nbeVxI6wX6bGgh6KMtz6sE17yLbjEAgti0WN3w7QjJVUgRJHerLd+Cz/UBOEf T1yFsZMXA6DN2gZvDABGgeFc5frZkYtAtEtqp6HVScnpqfFtRn9DjJLLgh1x7WsQQ3Qg2vefNy+FV pM2Q6Xee7s4zG+/P4tW3x1jSZ2RumWmpBdZT+mUoAGecMiimVrF9f8UYfs7Rp93FjOvgPCGpmMKq9 2mxpkoXsNefLxXfrVQBr7ByaZvIOdksOGdV4OLq1xq/qd2qCCPG7lYS7dFgMqEKq2nea4UHmaa6YZ 6Zt6X6wA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rRN8l-0000000BNz7-2JOq; Sun, 21 Jan 2024 02:00:51 +0000 Date: Sun, 21 Jan 2024 02:00:51 +0000 From: Matthew Wilcox To: Miaohe Lin Cc: naoya.horiguchi@nec.com, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm/memory-failure: fix crash in split_huge_page_to_list from soft_offline_page Message-ID: References: <20240120065729.3276395-1-linmiaohe@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240120065729.3276395-1-linmiaohe@huawei.com> X-Rspamd-Queue-Id: 70B38120018 X-Rspam-User: X-Stat-Signature: ptusu36j9eo3drqyu8q7ef7xfodme5rc X-Rspamd-Server: rspam03 X-HE-Tag: 1705802459-743695 X-HE-Meta: U2FsdGVkX1/OetlJ/mFbuDvmFnbEuHqhSCD7p9yV06kZJRpANr6XQ6U6Jwv9m7Iq8bb9EmS31JRamYPOSsBue1ie0RzXJQITvTCwT7fP8VybBD7xNatcrZGJfNoQ7SasSMtB6E52abjYxZ4r0Gkty9OJn8cCGhvaLuWULGbd5oXVQNtYaKZ915IM6NK9TqRf4AGvicNrgX5nTdJd1/osgyA8O5CuIttfrh6jYNF5JBNNgEkcpH6UsNKIIHhSacWRuxa3HuRt5kHJI10bivdyfliNWuZGtcZqlpQAEn3q1nGG/j1KqJwzBURwakh2Wwa6RNNtTk8CnbywJoXVabIsRS5x9dBiLe/XH2XYKqxR/GcUkC1WRlcOSP1dB3RB7G72r/e6neWW0HnZb0Fm2kfbNOzOYQ/EljMAKAlw3ICzwKNISn+cJ7v1xpfHH/JEPNLE1ExIMUkYintQSs7Ns+ofnUbeuX+sLnMWdTMK7+yxACC1khl9YlqslXaQU4tUy6C0usDfYYjlc0UuvrEYoyRWJhvb2ghGUWlwDIZ9mxRa7vX0vHmgYqoCdoPbcCwgTrY1tYQ8PUaItI67CMn03Q0YAHGt9BQ2Oa3f88tbM64dgPu+8I7Wr1kyP37vGyTfV/PNOojKO5QNrazrZ+57b60uBDiX7L+z6S9qGmKoSLMfV1O2pfzlwV43xiDfADtYgsi1GSEbBWqmD8bKoUiSgZEQzA9j1a/0HKVPYhbQ++8Q1qpTi7MQ8MXaFrGCqQwaIuLx5G56Bwfygnso2OhOxnFwtzUUMsxUDYx5fD/QUyqXWJnw8VTtQpSBGXviGcxLKabI0bfqIPd+PqL6ZV0z42KxOMOEbhd+SO5muVOPXc1eIHqiouvELw4whlTop0iyltEH 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 Sat, Jan 20, 2024 at 02:57:29PM +0800, Miaohe Lin wrote: > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index 636280d04008..20058f7ac3e9 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -1377,8 +1377,13 @@ void ClearPageHWPoisonTakenOff(struct page *page) > */ > static inline bool HWPoisonHandlable(struct page *page, unsigned long flags) > { > - /* Soft offline could migrate non-LRU movable pages */ > - if ((flags & MF_SOFT_OFFLINE) && __PageMovable(page)) > + /* > + * Soft offline could migrate non-LRU movable pages. > + * Note that page->mapping is overloaded with slab->slab_list or slabs > + * fields which might make slab pages appear like non-LRU movable pages. > + * So __PageMovable() has to be done after PageSlab() is checked. > + */ > + if ((flags & MF_SOFT_OFFLINE) && !PageSlab(page) && __PageMovable(page)) > return true; > > return PageLRU(page) || is_free_buddy_page(page); I think would make more sense as + if (PageSlab(page)) + return false; ... and then leave the rest alone (including not touching the comment)