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 C7C83C678DA for ; Mon, 9 Jun 2025 16:16:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 646476B0092; Mon, 9 Jun 2025 12:16:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 61DF76B0093; Mon, 9 Jun 2025 12:16:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 533FF6B009A; Mon, 9 Jun 2025 12:16:53 -0400 (EDT) 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 33D586B0092 for ; Mon, 9 Jun 2025 12:16:53 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id D62E95BB44 for ; Mon, 9 Jun 2025 16:16:52 +0000 (UTC) X-FDA: 83536365864.17.C5D2052 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf15.hostedemail.com (Postfix) with ESMTP id 57AA1A0005 for ; Mon, 9 Jun 2025 16:16:51 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=aze4D2TO; spf=pass (imf15.hostedemail.com: domain of djwong@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=djwong@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749485811; 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=wOTP1oN/wMDnW0o30LaALotgVsL1ALNSEk+jZnzGiHk=; b=rKnQBe9fC7N0RUhN55Q2pzpdqi2F8GetrpZWqERg6Y+wQiyfgM/6RZ0YzIcen3pQOfkhJ3 7+VANZs1dohk1ANkWCA+Bgt6DNjsZOVKUu4g8WCTZ5630D7cyuBnHMlVz0mNA4fshkslzh bdDVBCm40TQyn4CI/LKQ/2KSlfylM6Q= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=aze4D2TO; spf=pass (imf15.hostedemail.com: domain of djwong@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=djwong@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749485811; a=rsa-sha256; cv=none; b=rdjS8YOKwgnw+Pge8d4Zh2r8zbg08tQ9TmwyJJBGCqLWgPrA6RYURZ7rjehCAdqeJD3RZG nRFtjo4LzLwvl2rmyq8WLwNwhmbEkis5jteBghD4iDdFPSsHLQ21EJCvVSSaEfHy8ryvVx hZHGNYv3pYRiyQhscd6/8WYusysHUGk= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 8326C6112A; Mon, 9 Jun 2025 16:16:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2DF23C4CEEB; Mon, 9 Jun 2025 16:16:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1749485810; bh=a5yNf70th7PfRA6xSLN9zz87BrnzItNsGibksd2xWXI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=aze4D2TOOl1hFddI/gLa5cdCvzXcKO/8m4ISRTbckDQjO8MJhUMdV0RoHk/FqZLn3 3NDBPL9MKmwhFp0nfw0yXf/nSS0vof/VCO9swjxquxbWzKkNlqfVuIPbhgkd5x4B8g oPYuE8p8nErm/LC6Co9nEVRXs7pExrC+DBv8F898q7CJA52FutgPdTvCv4ZAtoooZ5 LTyd8uir2CkLuL6hi1d2Ul0fHfkQSsuzh8tMFV8SnxqwcGdZwuo4BJPjfa2qEV93MJ sFBuWrxUHo3aWgWKOxN6qY4hKWgDD8cv4wjytlPMxnXTltLBSmdE6Bpxd3GPFh+K9z VWCIMDDJxWz3A== Date: Mon, 9 Jun 2025 09:16:49 -0700 From: "Darrick J. Wong" To: Brian Foster Cc: linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 1/7] iomap: move pos+len BUG_ON() to after folio lookup Message-ID: <20250609161649.GF6156@frogsfrogsfrogs> References: <20250605173357.579720-1-bfoster@redhat.com> <20250605173357.579720-2-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250605173357.579720-2-bfoster@redhat.com> X-Stat-Signature: azhfo1j3kmns8ijatjmrgwb5wgxickbe X-Rspamd-Queue-Id: 57AA1A0005 X-Rspam-User: X-Rspamd-Server: rspam02 X-HE-Tag: 1749485811-995175 X-HE-Meta: U2FsdGVkX1+nHVfwQftqUPHSugkngnbnSeneiPN4kN7nM9X6DVkyEG1Y26ZUTzpTbRKro0k9vLsqFgr0hs+WqZmQymAMoV/JAHh+i0oj26pHuExZewgrUM0J/zLvYFj26DfoMUzG4oRnL9+cREG9L3GC3vakSVlkmGtehVcRF5r3gzfQdx0xeaSGuqoOLF31ef8lxVNhmx+9gniUt5KvzzAnBEjlUZ3uS/N+1CxHv/dEapQls5cndz8uT+r0otJ5yvBWsrdbFzPqa2numE/geNwZOINKKeYIwonh8pbkM82CsQdSwfXjwj7jBxHFJJB83P//zJpwLVUu0OZZCrZ4K623KUxXVPdlGqCjMAllDh9wZ7SwOjnD8N0ZikNbfc8mcPTqRqae7kU2wMStuWu5H8dTjSDbq92b4lDM61EYzmRAjU3nx/tnfIWD8phmVGmjFLCbjsz/ouh4qm4YtZksEZY8yQxAqAKZ+10c52dmhwTVWnt8axTyqSTy/bplU6FeyxCkew9k8PcOapfVIjxKnW5QaTfAjou2NkT9zOW9rCfzckanXNxVf2jWAgaWWOI613B0+2qmlUAWS25lCE4Dd1z4DJnfj9FFYYkArb7cK239LDvukpbwtV34nM8Z9ty35ss50p6BETz6gBJmcg5YeDFJBsoQsZnELd5fOzOOnVLCWowXx2j+HdyuFxkn81Krwe6SaLKMg4GEgi62O5tNV1e4LElYiGXHx+fxJJH++FtVsPh/PfT6TycTmEk2Ef21meXas+eG7n1PtDpkDJ82QueRkvxU7kak2tYa2o81FXyECbRUz1BmkITZd8vughBBsbKqeXBZ3khNd/c8asJ4Tf+RCZU79EHwg+md8gKnio3+HAZOfMC8EtL49wVbwwdL+EJSIxcB8vQv/PRET+F5BmmFxXfxKjfE9OkmT7BrSp5ELZQAAlFaRNnIqruharYwkK0STcHKKwNxhPVjUpR rqb428V2 wkN3Rzue8STABlvu0cd1JvTvFlbcIVToR2VHc+voQdz5vTqWBVOFMNXzKUBRUAr1+6Ezk+vfY522K/CFgv9b60TSFLImrP+HilZYkPPLvSldkpJ8aVZnOkdobI328zRU5Y7VhUkQZMHCBbImUODVQYD2yPxXlUHQuyWYLr/UKAeXTQJQHdVu1US1tKr8cO2Slc4MCZXeQ/HjfrQOH+yjGER90979rX4By9ZNcrB3scYBi4/h+02knXCKoqovLZe5XwJL/nMukjlBuOgdQCi7dEeApGp2tiMCgN2eb+M5kM/x+KDgGqJlur9H+5LTebT9gc5c1 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 Thu, Jun 05, 2025 at 01:33:51PM -0400, Brian Foster wrote: > The bug checks at the top of iomap_write_begin() assume the pos/len > reflect exactly the next range to process. This may no longer be the > case once the get folio path is able to process a folio batch from > the filesystem. Move the check a bit further down after the folio > lookup and range trim to verify everything lines up with the current > iomap. > > Signed-off-by: Brian Foster > --- > fs/iomap/buffered-io.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c > index 3729391a18f3..16499655e7b0 100644 > --- a/fs/iomap/buffered-io.c > +++ b/fs/iomap/buffered-io.c > @@ -805,15 +805,12 @@ static int iomap_write_begin(struct iomap_iter *iter, struct folio **foliop, > { > const struct iomap_folio_ops *folio_ops = iter->iomap.folio_ops; > const struct iomap *srcmap = iomap_iter_srcmap(iter); > - loff_t pos = iter->pos; > + loff_t pos; > u64 len = min_t(u64, SIZE_MAX, iomap_length(iter)); > struct folio *folio; > int status = 0; > > len = min_not_zero(len, *plen); > - BUG_ON(pos + len > iter->iomap.offset + iter->iomap.length); > - if (srcmap != &iter->iomap) > - BUG_ON(pos + len > srcmap->offset + srcmap->length); Hmm. Do we even /need/ these checks? len is already basically just min(SIZE_MAX, iter->len, iomap->offset + iomap->length, srcmap->offset + srcmap->length) So by definition they should never trigger, right? --D > > if (fatal_signal_pending(current)) > return -EINTR; > @@ -843,6 +840,9 @@ static int iomap_write_begin(struct iomap_iter *iter, struct folio **foliop, > } > > pos = iomap_trim_folio_range(iter, folio, poffset, &len); > + BUG_ON(pos + len > iter->iomap.offset + iter->iomap.length); > + if (srcmap != &iter->iomap) > + BUG_ON(pos + len > srcmap->offset + srcmap->length); > > if (srcmap->type == IOMAP_INLINE) > status = iomap_write_begin_inline(iter, folio); > -- > 2.49.0 > >