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 903BAC021A4 for ; Mon, 24 Feb 2025 15:38:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2D8976B0083; Mon, 24 Feb 2025 10:38:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 287CE6B0088; Mon, 24 Feb 2025 10:38:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 176B56B0089; Mon, 24 Feb 2025 10:38:10 -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 EE25B6B0083 for ; Mon, 24 Feb 2025 10:38:09 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 810FF1A1774 for ; Mon, 24 Feb 2025 15:38:09 +0000 (UTC) X-FDA: 83155244298.07.3AA77E5 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf30.hostedemail.com (Postfix) with ESMTP id C1A168000A for ; Mon, 24 Feb 2025 15:38:07 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=dGy0+c5q; spf=none (imf30.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=1740411487; 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=Foq8I3JNlChaWlKQTvXhKnxEWV4W/FEAiOkbf1faxlw=; b=5CuuM7Kk/zwT3EjfbnyzNNhRKPbQMPj8yAvp/w6NOdwfVu6v8hH5aFFYrIzZW51EzXMfoV pgfc4WjXtWbag6KZkquTrguAmoKw2U9RQiaJhgAr6f9ckStSdPiuZL4cgLq4I2iEt4t52A bLQE1o2ws8GMDkPVdxn9ElIH3fUbXlI= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=dGy0+c5q; spf=none (imf30.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-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740411487; a=rsa-sha256; cv=none; b=n6rIwfK67XdjwJtvsXNVi39w4UavMLdDiXh5fWzWyU4nWq9rJsWzDN+C73z+AKvo0hy6SK NGp8UfgHtICB6crAgLWPGfJyVYWzP3YiyElBOhQX7AQS85kfoB55ae87D1cvlv/7TP2y49 aVoKayCkh8zKmNzSzFyfdartbymPiVY= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=Foq8I3JNlChaWlKQTvXhKnxEWV4W/FEAiOkbf1faxlw=; b=dGy0+c5qb/Ao3yXfO22EMIa740 binkjYpxDp1zZL0363NCPW0EWT/+sRO6kB/Bmh7Q827os8SN3d3SNCsK4QZTZdkG3t3RNuN5VLvfS IpTbM2aysd6QNxGjpf2OG/bgmL6QvcqWnyUYaOtQjRF5DUqM4pqm78TK3TwgTZddGX1Xmyq0vx49y ZQnAjFDSswza/03nxku2ssEYXQk+H9ClENAumqvUKtBkqtPhfApeWSRanxNGgI+lKauJAlmNP+lG8 uPe64Hwsu3gxYvylSMp+PvNM0o3RYI2v/dUxt4mT7+/cauxpsDe7hYypcT3SpQ/toTp5cUDos0ZqW k5xO3/jw==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tmaWp-00000007ehN-1QT3; Mon, 24 Feb 2025 15:37:55 +0000 Date: Mon, 24 Feb 2025 15:37:55 +0000 From: Matthew Wilcox To: Barry Song <21cnbao@gmail.com> Cc: mawupeng , akpm@linux-foundation.org, david@redhat.com, kasong@tencent.com, ryan.roberts@arm.com, chrisl@kernel.org, huang.ying.caritas@gmail.com, schatzberg.dan@gmail.com, hanchuanhua@oppo.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm: swap: Avoid infinite loop if no valid swap entry found during do_swap_page Message-ID: References: <20250222024617.2790609-1-mawupeng1@huawei.com> <2c7dfa44-266a-4aa6-9401-7528368f171e@huawei.com> <61566a74-04aa-44f1-9aa9-624644f06450@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: C1A168000A X-Stat-Signature: royeim3kynrfeogerencx7ar9tn5o3ag X-Rspam-User: X-HE-Tag: 1740411487-926114 X-HE-Meta: U2FsdGVkX18po0MhwlIyL/ZKdCSGFBVB7J1IUf3AlESvDZVsCvGsHObs83PBQ//AtnOBf+TsrJvBzog+qLynNLdokkLl2fx8QQgVz882UbG+TkpWHpxqSrTI02E8vBXDQpwmyhvuQiyWAp7ESGj/kaSrE3yh5ssEgSKBIXBgIzt6w6MKhe0oMw5/ajaoLUCNMtsSEc+OqJJtgyz58RjJzgIKB76ki7heht4oYpZIhFq3tPzvmJsps4FzFRx73g8dpk2KNI8ke6tNjN0dsrAO0MymUOlP0+SurcT85nyaHwX55en2VLWeE0awvBbYG8Gtnbci7hU7m186xmv7v2BLUsgWEGSrELbOZFGUkND956UbSIeU+p4Emr6+7BU3Er7KwAMbsAP6zF3gjdYfkbvpLhhMu87SCK1rkvn88GoMwSXqVOrq//+eQm3zKo/kEGmyueyMUZQi7i00NFtpt99e6oZAgd6j8B+hhp5/HacJK+TmigrKMtBnwM2ahOgxa9Qp2TWH5Y6+QKuKw2Ov3Q5hxWxYah+VXXoVmNKqEat8kFdcHUVhYgOWJyB/TefDd0bzzdz7LyIfYT+DMBcaXGzzByuhmrhIYpqzAv7tXh1lenlMIwmaWJDfLDQ4VOsIel4xg2eGIixW9BmP+yXqky1EMYQZp2pFIB/aO4B48I1zJgRpoMcibfYTGW9mBNlg1On5B5+Htrm1dN9/0fHJbbuRQE0Ix2R0dWxiu70gjy3bS48CojCqdh1UJFcjhjsVepIsx6LoP7CatQs3jTkLZnOgpP2Lk0ts/5gBn+TzrkphCzLvC8OP4XbbJ6QvpQamWD4AGuSHmVGrHjqgqpwzPBRe/hp2qslu1+HykoDAU2j1Q+yI9kzozL6SlswY206QD+UH7zS5eApwVnn5en84GfAmkMb2/ca+duGyGHdmFMo+v/afJFRyE6bTQEYkQmELqizkQ/PlHoamv8PTw61pWvE Ays0FKp+ elYA5DcSzJ2qTEvTVYFjewuugRB3MlFvDgYSlF9iwb0m4hjvDMxw2yrA3wCdXJFs4ve0KSEZYbNenc1Nl3+ZP20O8KkLberO94fBm8JMoijYJ92Rksw+oB/CkOkjejC1jpGDP8IZZnNp/itQ/3zo8+z0up4ehtOjEll4i4HGubEhJdlHXvX5lErHZUpVz/vT4ZAHP1ExfBu6j3ao75gHZgUPg3tafvQKw1T/sbgBhrhAkWz5BUguqdinOE30c4VEsIWGQ9DEj4lfQbahPVkxiQsUxagb4/SYJTfrEGOGVb1qTqYUYUd0wJQnfLh0zZLsVkdofGDFJeUW+lMvIDdX+/e3wtU3CKyTUCUeG9lBZEDdD4QG/Jpjb3VM0cA== 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 Mon, Feb 24, 2025 at 08:11:47PM +1300, Barry Song wrote: > Please send a V2 and update your changelog to accurately describe the real > issue. Additionally, clarify how frequently this occurs and why resolving > the root cause is challenging. Gaoxu reported a similar case on the Android > kernel 6.6, while you're reporting it on 5.10. He observed an occurrence > rate of 1 in 500,000 over a week on customer devices but was unable to > reproduce it in the lab. > > BTW, your patch is incorrect, as normally we could have a case _swap_info_get() > returns NULL: > thread 1 thread2 > > > 1. page fault happens > with entry points to > swapfile; > swapoff() > 2. do_swap_page() > > In this scenario, _swap_info_get() may return NULL, which is expected, > and we should not return -ERRNO—the subsequent page fault will > detect that the PTE has changed. Since you have never enabled any > swap, the appropriate action is to do the following: > > /* Prevent swapoff from happening to us. */ > si = get_swap_device(entry); > - if (unlikely(!si)) > + if unlikely(!si)) { > + /* > + * Return VM_FAULT_SIGBUS if the swap entry points to > + * a never-enabled swap file, caused by either hardware > + * issues or a kernel bug. Return an error code to prevent > + * an infinite page fault (#PF) loop. > + if (WARN_ON_ONCE(!swp_swap_info(entry))) > + ret = VM_FAULT_SIGBUS; > goto out; > + } This is overly specific to the case that you're tracking down. So it's entirely appropriate to apply to _your_ kernel while you work on tracking it down, but completely inappropriate to upstream.