From: Christoph Hellwig <hch@infradead.org>
To: Jan Kara <jack@suse.cz>
Cc: linux-fsdevel@vger.kernel.org,
Christoph Hellwig <hch@infradead.org>,
Jianzhou Zhao <luckd0g@163.com>
Subject: Re: [PATCH v2] udf: Fix race between file type conversion and writeback
Date: Wed, 25 Mar 2026 22:47:40 -0700 [thread overview]
Message-ID: <acTIfOuv3Ik-erB0@infradead.org> (raw)
In-Reply-To: <20260325162209.29233-2-jack@suse.cz>
On Wed, Mar 25, 2026 at 05:22:10PM +0100, Jan Kara wrote:
> udf_setsize() can race with udf_writepages() as follows:
>
> udf_setsize() udf_writepages()
> if (iinfo->i_alloc_type ==
> ICBTAG_FLAG_AD_IN_ICB)
> err = udf_expand_file_adinicb(inode);
> err = udf_extend_file(inode, newsize);
> udf_adinicb_writepages()
> memcpy_from_file_folio() - crash
> because inode size is too big.
>
> Fix the problem by rechecking file type under folio lock in
> udf_writepages() which properly serializes with
> udf_expand_file_adinicb(). Since it is quite difficult to implement this
> locking with current writeback_iter() logic, let's just opencode the
> logic necessary to prepare (the only) folio the inode can have for
> writeback.
Still not a fan of open coding this logic, which is even worse than
the previous export. Inline data is a relatively common case in
various file systems, and we should be able to handle it in common
code. So having a callback in mpage_writepages seems much better,
but if you detest that we could just export mpage_write_folio and
mpage_bio_submit_write (and make mpage_data public) instead. I think
that's significantly worse than just adding the callback, but still
much better than open coding more writeback internals, something I
want to get away from.
next prev parent reply other threads:[~2026-03-26 5:47 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-25 16:22 [PATCH v2] udf: Fix race between file type conversion and writeback Jan Kara
2026-03-26 5:47 ` Christoph Hellwig [this message]
2026-03-26 12:29 ` Jan Kara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=acTIfOuv3Ik-erB0@infradead.org \
--to=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=luckd0g@163.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox