From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (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 5EBD23C2B92 for ; Tue, 18 Aug 2026 10:08:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787047713; cv=none; b=SgDP4okcYPj8k1XSMIRI5fAJ0JQ8Ktkhce5bakRwkiZgoLCD+eB/V2dg/05BGB+BALAMENV2x+ULN7e8l5MIhXvCcvxu7rJ5M5EXlZXyg0uPBewOT8IVaKOfjwGoxw6nYLzK4UTd6v4vVXGxLG+Ld6iCaqJZl/9VSj5dTzrfLE0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787047713; c=relaxed/simple; bh=dbJ2cob7ug0q0zBMWou2pCCet89ZlFMUpENdIOQ07oI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GNP0J1ApqhJLDgT9kADGN9QqLePP856L2zTwt04RyyS9CMIDs0+FGZ4zSEugTEqlnNeDywi0W7X8IL2+gRw5FPmBA6qisbHW4PeIg+HLAwJdemrzPycYk7gp7m1YF/fe2lDGsFi3SD5Yqye78hGI9eLJT9/pC8S4NdrKruFIjGk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=pBXqHchq; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="pBXqHchq" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description; bh=18b3yXoATxSl7J4Qohqzo1mLFp4/SDkenmc18eUXtfg=; b=pBXqHchqvMhKy9q2TLfprFQxpv oTrVwijpGoNrlS2oCNpfs9soa8XN5XhOMcHuyP99jABYgRv0Z6DTMemrMRLQOhxSGkA5pRa7QExFa T6EE0XJMUn0nFaSWs9BT0dbrxuZawIlflqIUyt9ztGwden3S5X63hCNKEOhVzUbkBd7ejGlzpOv1I 1p+/NxOep7oZjDo1dt0WtfoT/C0L8MG7IYfoONz/plq7eJoxrxvCZr+l2A9ttRLKU5i70U/Bxv+5c kFSMae0s/qZKxiGfn232s9yQ6aenykVJCI6pSaAIkP4gIup1u/ksWbtC/VxG/dop73XXJe547P9H8 KcFmc61g==; Received: from authenticated-user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1wwGk7-008wGb-2X; Tue, 18 Aug 2026 10:08:28 +0000 From: Breno Leitao Date: Tue, 18 Aug 2026 03:06:24 -0700 Subject: [PATCH v3 2/2] mm: fail the fault on a malformed swap entry instead of retrying it 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: 7bit Message-Id: <20260818-swap-v3-2-d3fa52598a59@debian.org> References: <20260818-swap-v3-0-d3fa52598a59@debian.org> In-Reply-To: <20260818-swap-v3-0-d3fa52598a59@debian.org> To: Andrew Morton , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Baoquan He , Barry Song , Youngjun Park , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Pedro Falcato , Hugh Dickins , Baolin Wang , Peter Xu , Johannes Weiner , Yosry Ahmed , Chengming Zhou Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, Breno Leitao X-Mailer: b4 0.16-dev-f8e9d X-Developer-Signature: v=1; a=openpgp-sha256; l=1062; i=leitao@debian.org; h=from:subject:message-id; bh=dbJ2cob7ug0q0zBMWou2pCCet89ZlFMUpENdIOQ07oI=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqhC8HeqOvC+bUMvfHEdA+WWMzM+GRMPTCTJ0Wi zjOPGWeGX2JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaoQvBwAKCRA1o5Of/Hh3 bVrsD/480wUQJFwAkhlGjW1ypFpLBPmMQ1Hotp+NK4hb+G6+VM4D856NfUR+kncB3McvL0pMrcH knib03o9/OqhUG4PVJ6jTUgPH41mwb4iBwzH34IhoTzmUhZoVBsgww4iGZBGAx8FWQCA2vzZxYV aSrHQPN/S3pM2RJlzM2eJM+b/eMXOVWiqIm59/crVNLx8HH2liovLJ+28aSSQCC8KTD4oWwq9LA 8641BzTVdpy3fCuNY7DN/X8eF1SJxmylbO+l/puDJQB0WOsPZ37nOTKYgL5QWAhDboLpWBrxWoH 6DsJfxIxfJ6hJh/1nL2ZDsJoDN7SSwHKxJC1XA/86rlSKcRHKuew/lXQtVKbaoxfJXlMjTmE4o+ ryr4R9++j1hklIi0ovdVDzcM4rTGCiHrCmBMx4vAAY7sWfNTdbrR8LRbYgw/gY/M72qTRWL9OBf mKEWQ12uUXyS54InQrvQ09GrFdRMQalUArtUqySv2+EFTT5thP+bK0O+t595KrJ7HZKk1L5pesz kXam7pHZYZkINg0W880zu99JSOl0UQQ7ags1OW6D2GTAFXbtYVcHD0bRorceAhlwk37+8NzwFcG 5uviraK1wEIqzzh4bGMgdtpnqu4MTxfR6XPrEJnSGG5M0lzgtic9WHITcRciGeS82CEwNV/DWua LTquOjP4JaMbHzw== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao do_swap_page() returns 0 when get_swap_device() fails, which the fault handler reads as "handled". For an entry that can never become valid the retry takes the same fault again, so the thread spins forever, retrying on the same fault. Return VM_FAULT_SIGBUS (Bad access) for a malformed entry (pr_err() was called at get_swap_device()). Acked-by: Kairui Song Reviewed-by: Barry Song Signed-off-by: Breno Leitao --- mm/memory.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/memory.c b/mm/memory.c index 03d8cf111d0be..d9db4f1ae6f8a 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4956,8 +4956,11 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) /* Prevent swapoff from happening to us, and reject a bad entry. */ si = get_swap_device(entry); - if (IS_ERR_OR_NULL(si)) + if (IS_ERR_OR_NULL(si)) { + if (IS_ERR(si)) + ret = VM_FAULT_SIGBUS; goto out; + } folio = swap_cache_get_folio(entry); if (folio) -- 2.53.0-Meta