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 A83A6C3DA49 for ; Thu, 18 Jul 2024 15:09:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A86386B008C; Thu, 18 Jul 2024 11:09:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A367B6B0092; Thu, 18 Jul 2024 11:09:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9252B6B0093; Thu, 18 Jul 2024 11:09:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 70BC16B008C for ; Thu, 18 Jul 2024 11:09:13 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id E6AFB81A9A for ; Thu, 18 Jul 2024 15:09:12 +0000 (UTC) X-FDA: 82353206544.18.D5F8A2F Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf25.hostedemail.com (Postfix) with ESMTP id EE602A0008 for ; Thu, 18 Jul 2024 15:09:05 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=mGW7teYQ; spf=none (imf25.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=1721315329; 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=nSlyvMPyg3jS+qwE9Mjq/Dc54Aa0BLrkXgP6ILW+ByM=; b=hWOq7ebd+37wLm/vBoYzvq6vV55h89UzNmQI+Krjw77EhFjnFhDFg/mj3fnzE2czA4N9m8 ofYZDsLNMHUaZUVsdRvTx2FoltGYXuMqy4xIqPN9HVJJudYENCCKj5lnSa5gVpZAJhGNvV M67g3n8KkyHPD7iPnc/X4dPxrN7oMlw= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=mGW7teYQ; spf=none (imf25.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=1721315329; a=rsa-sha256; cv=none; b=4DaGjZCeQJUZO+KttWR5zarlNBdV7phpiwF+4Uw9/P3tL+HZA7tatxI9xfstxxnfFOtDv1 vh3SweVNE75p/ZkLahi+qHQLdtSmCMUtLws1A7j/e/k9m++A8MkeAOD8wXcjHF3uwpLR7X 13JYL82ivv89fCBsFLlbhTJlAoXl5t8= 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=nSlyvMPyg3jS+qwE9Mjq/Dc54Aa0BLrkXgP6ILW+ByM=; b=mGW7teYQ5oX6LPFeDfscRuL1qc jE1e1ujecHyB5YGiuO16UxqFWldJYqtwi9vBRoQ9fqv5hw8z3rPChRn2A8Pk1eShBN4N+a5SFAh3H czpL6l+6TxbSNaoOdpUX4Niz1vCK2Ts1t+ny1tpvLXcrkgudxLj+NQzc6lm2ear5LBsQ8H/eQ/kI1 YAtJ2ppXKC6OCJUN+RqxYlkCyY04ua6Fd2dWizVCEGbHUhOXGagJL5kNQZ4t1+1mtLP1E6w03Clu4 BXXjIiHM15/miX0FtSZoIZD881u8OTVFlSSb8+CJnMCRbFRz+BsI/gh0JxwXjJbwbnuopYLP6tdyA iIkR/QiQ==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1sUSkh-000000025ro-2kZC; Thu, 18 Jul 2024 15:09:03 +0000 Date: Thu, 18 Jul 2024 16:09:03 +0100 From: Matthew Wilcox To: Brian Foster Cc: linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 1/4] filemap: return pos of first dirty folio from range_has_writeback Message-ID: References: <20240718130212.23905-1-bfoster@redhat.com> <20240718130212.23905-2-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240718130212.23905-2-bfoster@redhat.com> X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: EE602A0008 X-Stat-Signature: wroekrnz7nj8x57uwxsju6aad3j93k3d X-HE-Tag: 1721315345-936250 X-HE-Meta: U2FsdGVkX1/Hu2dpk1iKZcOpy9abaXTiFU88d/0Gn86W6JGst8lO9uGllfyLs1DD40vOH+5Bvtu32cC8vXCroqx54ssI66cm/gfskDxkQMKj2z7hqtQBaN4eKTLMTJaegc0nSsm0a2BOp3nnH8o2PeTOIJvdMrSxFgag2iJkgt+zWJEAMwoKIpb8Jpbc3BkMHe7UstWuLX7r46onjjRVK6LE/nVrCpjeo3b/U0vO7Stnr3YuvmP1g7N/Nz2WqPaGy4WomcdzAzjLuBgE5LGQJssKM/u47hn60hSZGKVgSIdjAg29KMwVgfTO7v6qjBpughl9xjdc4IXes97DxfcAULv/44B/mS9ZTJtxX8a2s9obBOGz26yPr9M4aRKh8AbMheOIXZAO/FzFn3IWqQQ/RggFAos3td/N/lQAlxN+C4Ua5jh0BpufAb8d/2n9vA1h++Gv99hspcNFxTRrL825wV7JvjeKqGgt07dPlDi3v3wYJbcUkSvSNVzVlw86n2oG1J4eLyOsvX8nKK0gnG+8KsJkpugFJ+XhiTPDcy7e0dO/ujxFaMSiF7eEZ4pNhhYHeHfmv0ffjsq+GwzfdmdDIjRIF4nhXvEPNpIaA+CS4RZUz/IDClTERS1BZAYE6PTvOcGJRpSkC8O09iH6yIeR3//WIvYz+TQUaRLxlhC4qf2ZnqWq/yGB/1Picl1m3F0LlSK7OHc6+x9fP559BkynpJ4mSxBusSD+aqhoTXFfGwdfWV0o0+F6d4VD4fhLRtQw2V1RySAF3/S8oeT2as0I8LFFhPD8bcjtUueIUKDoZMwMWyKbF0RN/9ZF+YBHOU3dO/rH9BOP7eCErCMVkazLvkpEy4Q1RRfPeQ7MyEYJ67WQbgmAGfVcmeUhRnVSRau4mZBrogMdMVXrtxL3k7F3k8FRBgZS4cgVtFED8ifm0b1QFbymUP5DPzAdjhcOQWV3miaEx3QCIh4YDf/SirS xhJlCy9j yOFbq+nI3LqHy3PIUdYYJ5w6bJR49EeSrpr0w/8gth8DM9T2GwDAzw7NHuZ6iDKyNpKd8jmaIBvQU/eCCBNGwhf44xh9LixC57JxSkMLXth2Jbs7305IuI51U3igsOHY/3V1Ej8N404EOGJJNYoUArryecXklcOAYQHqbBn4UQBhXQxd3MXlO74zQQR67QHgh/S0754+h1vbERKVjlZtjS8qLBgA39MvlGArjIDskZ1a5hWq1Zk64iOvbscVHZA9EEx0d X-Bogosity: Ham, tests=bogofilter, spamicity=0.000004, 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 Thu, Jul 18, 2024 at 09:02:09AM -0400, Brian Foster wrote: > @@ -655,6 +655,8 @@ bool filemap_range_has_writeback(struct address_space *mapping, > folio_test_writeback(folio)) > break; > } > + if (folio) > + *start_byte = folio_pos(folio); > rcu_read_unlock(); > return folio != NULL; > } Distressingly, this is unsafe. We have no reference on the folio at this point (not one that matters, anyway). We have the rcu read lock, yes, but that doesn't protect enough to make folio_pos() safe. Since we do't have folio_get() here, the folio can be freed, sent back to the page allocator, and then reallocated to literally any purpose. As I'm reviewing patch 1/4, I have no idea if this is just a hint and you can survive it being completely wrong, or if this is going to cause problems.