From patchwork Sun Mar 30 06:47:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 14032837 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 57899C3600B for ; Sun, 30 Mar 2025 06:48:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 98F8F280188; Sun, 30 Mar 2025 02:47:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 731CF28018C; Sun, 30 Mar 2025 02:47:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 47712280189; Sun, 30 Mar 2025 02:47:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 8655128018A for ; Sun, 30 Mar 2025 02:47:51 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id A24C98098E for ; Sun, 30 Mar 2025 06:47:52 +0000 (UTC) X-FDA: 83277287184.19.6DD35F9 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf05.hostedemail.com (Postfix) with ESMTP id 81459100005 for ; Sun, 30 Mar 2025 06:47:50 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b="dDhvo/HF"; spf=none (imf05.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743317271; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=RUUWKQeUwI7heeE55yHvLfByxYVbK6pQ52VmT/aJJR8=; b=TOORA0baBe8cXZ81pSihBgOizBVfGq3JJyWcp56LTAD++RXF70s0g1IoIZGIPsXfeha6ZK +e9zGiho0iczjxC6t/S1jYehZOrxhWlKlA5IbXZ6auFtpr/46bkSRGwkeuiM+mtvB0Etus 7S/glKrf6pRO9DgOZSU/Bp5xEMG/k2k= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b="dDhvo/HF"; spf=none (imf05.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743317271; a=rsa-sha256; cv=none; b=Lerz9STmO3kF5DTOQI4WDSDKDB5KquKVHT+0VCxpzNqrrBwtME0O6Djq3VbduXrPIpE2wF qrUApHikbNrs2X+sPKWcurd+spXBFlum7sW6pYk68YXb0O++uqs7bncpqHT2vdiyu5Rj+w Gbt0kzgIhDh9KqR0a6DoLES6oG2+aBo= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=RUUWKQeUwI7heeE55yHvLfByxYVbK6pQ52VmT/aJJR8=; b=dDhvo/HF/S2HHVyhDWQKPP60nE mWbUOhUGzO5ZItpyvnAvub9i2ByFYHzj/EjQvcldpK73T/UHAf7DlZI5ptDoyHUDofOO2Wxyaanas z4d8HgDYeEtrXDW58kA3kXIlbZUsmRIbaye8I3OPvYdUjHoNYSrKjuVrrHvDUvPvv2ZHKk0dnJY6n J5Z9L+Y70j79O0RtUuhUzfvkFLwVrGsMaKmHm9ZXn59kkXPAyKKyg/50f0/qu0ZCiRJhsUVnLWhg0 Mfq1urymt5pjZC7jZoo044VwLHRlhreogQOq8VDqBXP+qkVIUCE5lmpfqXleZ5RxRBnyYOeMixIFb Qy2AkaCQ==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98.1 #2 (Red Hat Linux)) id 1tymSJ-0000000FreA-26zy; Sun, 30 Mar 2025 06:47:39 +0000 From: Luis Chamberlain To: brauner@kernel.org, jack@suse.cz, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, riel@surriel.com Cc: willy@infradead.org, hannes@cmpxchg.org, oliver.sang@intel.com, dave@stgolabs.net, david@redhat.com, axboe@kernel.dk, hare@suse.de, david@fromorbit.com, djwong@kernel.org, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-mm@kvack.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, mcgrof@kernel.org Subject: [PATCH 1/3] mm/migrate: add might_sleep() on __migrate_folio() Date: Sat, 29 Mar 2025 23:47:30 -0700 Message-ID: <20250330064732.3781046-2-mcgrof@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330064732.3781046-1-mcgrof@kernel.org> References: <20250330064732.3781046-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 81459100005 X-Stat-Signature: jq588hkjzrppworbkpbypf8gqapjgua1 X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspam: Yes X-HE-Tag: 1743317270-720257 X-HE-Meta: U2FsdGVkX1815MlIUu0i3dObYrqKNwue5xCY39Gc6KlQRDo8dP8RzFlVd4FXwVCSJd950Bk0zRJX2DtBg/OXUFLxuQlyFYv+9CFuyMP/+CesbQXcu3JHqDihJ6xfRatjihuuM+0lIDkFULsOg31bcx/+PYRn780vit0ZvHPBdO6LUD54AwTmh2jnU63VJMdjiGYntc1sjbyr906igK3huGDEwr6wY/Vi5ws8YEB+u8qTiHEzaShlW/6MhH4snINZzL9jVxQyrOJ9LZqHZdU5XR6liuzbNqhNEVX8dD14j0Xdoh1BTFi9Wxje9FBvgmVyXOv2dyqPT9LSusKwrqDmiNOn+0nXjE4LLwryb37ksy9TuOCgHC1ZpXEWaS9N5nDv20s+Um9hrx77z1/E/N33/bPz0028eaEfuOa/rIFfAt+qDEnKdFPPRyMHxksHVfJ0cGBb3J6T+4ysjTU49m0q5/KoYQKZU+0MC7xfQQrANQEOeDPog5D3mh8FhkIIrgfPD6bh2N5+m6WHflTyTjQNHn93c6c4fSqfFSFQ+Ytv1lA0TbhlJiQu8xYSburl8VH87sAbOmbVz7k5nOT0oACtheC4jJQ1kfkpF9xeRS+t8y2lIuXVJJeJBXiQ+XFx9NNo9HB2UQ4qbbzar2V7xJoKep8MjPYAboGS9BwoOmckUXsReyQXNpQEiL5tNiGuJmXQNITB95pkyU8CzyjVm0mMGX0TakZcy6drD94LICAnW+fzqdRwdpbqYy/iQDB6dDNCA/sHdzy1I27PL7+6/g4X2bG0o9mtV11UX7NevPiO420Dm8qE9HRyNPOsPuyI1yY7gBVa+SwfCOT01sDrHoliJh8GaHjGJiabzKcGV5ZYFJAH0tXo16pvQIWRo4aPmBLk2qc+TV9ZWUB5+zWvgBCYsehqGDxBgLx+SJBIsb8Q8z7GmPLV6/qe+37quzFHCzzWcIp0NDdex2Odnn/9kkV IAsY/OCw KL2JA7yWW7EuD9Bjzs2MPxXwoRwPraAjF7NYcFssw/W12Ll7oshtRwM/Ulw2dHnHvd7UKmWPXcV8uuVNdKrzhWsyNLK6ItgMFFWP91z6nx5NWri2AdKOGZaKJp0CjQW+ZMrtRihi7/GHKL7WUNsIX+SKOK/Jn476u2lGgzVHn7IWybGGqaLEgDx1BT2wA/HAoNCdIM6fBqegIyGCDFLuTvDJetuf8C4zAv+xN6+0LV1jh5dwLgTDILTuZr88QMWDBrDDPr5Qq+QVMt6X9XxgxtgqpQn5LykXcYadeXDYwdMRZa6Euw8Ygy41CEV8wuvQfYp2PQIS2/PoqXpESKXjct+VnhuQbeAdR0hDJKDhfO0n0VoGzFtlMPlStqMKf0rHofmALlCxC1XgR1ZZShUJLl3RRC9CuZX1zg8/GiighXes170ot/PjWrA2+DkB0ELValC/1k20KX4WA0v+P5uTgMuswxb5o6JelQSGHrQD6YRRjngQ1sHVkCKBPxLKyDrO3+NzWXTND+eSfmQG4aWgEF+twXVw7vTm+3lT9jL4EpyXxodObIXLyLH4YHuGE+qYXjPVCQrSIFBkpU/dxp1+FgxeJ2Oh/D0iDyy6gKQGoEIGHlsfhX1C7Hm3EE9O31kezoCIQhn4y9s9e0O0uOlzhtSfKlA== 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: When we do page migration of large folios folio_mc_copy() can cond_resched() *iff* we are on a large folio. There's a hairy bug reported by both 0-day [0] and syzbot [1] where it has been detected we can call folio_mc_copy() in atomic context. While, technically speaking that should in theory be only possible today from buffer-head filesystems using buffer_migrate_folio_norefs() on page migration the only buffer-head large folio filesystem -- the block device cache, and so with block devices with large block sizes. However tracing shows that folio_mc_copy() *isn't* being called as often as we'd expect from buffer_migrate_folio_norefs() path as we're likely bailing early now thanks to the check added by commit 060913999d7a ("mm: migrate: support poisoned recover from migrate folio"). *Most* folio_mc_copy() calls in turn end up *not* being in atomic context, and so we won't hit a splat when using: CONFIG_PROVE_LOCKING=y CONFIG_DEBUG_ATOMIC_SLEEP=y But we *want* to help proactively find callers of __migrate_folio() in atomic context, so make might_sleep() explicit to help us root out large folio atomic callers of migrate_folio(). Link: https://lkml.kernel.org/r/202503101536.27099c77-lkp@intel.com # [0] Link: https://lkml.kernel.org/r/67e57c41.050a0220.2f068f.0033.GAE@google.com # [1] Link: https://lkml.kernel.org/r/Z-c6BqCSmAnNxb57@bombadil.infradead.org # [2] Signed-off-by: Luis Chamberlain Acked-by: Davidlohr Bueso --- mm/migrate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/migrate.c b/mm/migrate.c index f3ee6d8d5e2e..712ddd11f3f0 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -751,6 +751,8 @@ static int __migrate_folio(struct address_space *mapping, struct folio *dst, { int rc, expected_count = folio_expected_refs(mapping, src); + might_sleep(); + /* Check whether src does not have extra refs before we do more work */ if (folio_ref_count(src) != expected_count) return -EAGAIN;