[PATCH] block: avoild hang when bio_list is non-NULL in submit_bio_wait()
Christoph Hellwig
hch at infradead.org
Tue Mar 3 00:50:56 AEDT 2026
On Mon, Mar 02, 2026 at 10:51:03AM +0800, Jiucheng Xu via B4 Relay wrote:
> From: Jiucheng Xu <jiucheng.xu at amlogic.com>
>
> When current->bio_list is non-NULL in submit_bio_wait(),
> submit_bio_noacct_nocheck appends bio to bio_list but skips IO
> submission, causing submit_bio_wait() to hang indefinitely.
>
> Fix this by temporarily backup bio_list, setting bio_list to
> NULL before calling submit_bio(), then restoring bio_list
> after submit_bio() returns.
No. Fix this by not doing something that is a bad idea.
> I've trimmed down the call stack, as follows:
>
> f2fs_submit_read_io
> submit_bio
> mmc_blk_mq_recovery
> z_erofs_endio
> vm_map_ram
->bi_end_io code really should not be having random in_atomic()
checks that make it completely different, but even if they have
that need to use GFP_NOIO.
More information about the Linux-erofs
mailing list