[PATCH] f2fs: fix to check bio after __blkdev_issue_discard()

Chao Yu posted 1 patch 5 days, 16 hours ago
fs/f2fs/segment.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] f2fs: fix to check bio after __blkdev_issue_discard()
Posted by Chao Yu 5 days, 16 hours ago
Previously, __blkdev_issue_discard() will always returned valid bio,
after commit e8b4869bc78d ("block: add a blk_alloc_discard_bio helper"),
it can return bio w/ NULL value, which may trigger panic or warning
in __submit_discard_cmd(), let's fix to check bio instread of return
value after __blkdev_issue_discard().

Cc: stable@kernel.org
Fixes: e8b4869bc78d ("block: add a blk_alloc_discard_bio helper")
Signed-off-by: Chao Yu <chao@kernel.org>
---
 fs/f2fs/segment.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 8375dca7ed9e..44c0cefbb5a9 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1351,7 +1351,7 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
 					SECTOR_FROM_BLOCK(len),
 					GFP_NOFS, &bio);
 		}
-		if (err) {
+		if (err || bio == NULL) {
 			spin_lock_irqsave(&dc->lock, flags);
 			if (dc->state == D_PARTIAL)
 				dc->state = D_SUBMIT;
-- 
2.49.0
Re: [PATCH] f2fs: fix to check bio after __blkdev_issue_discard()
Posted by Christoph Hellwig 5 days, 16 hours ago
On Wed, Nov 26, 2025 at 02:14:37PM +0800, Chao Yu wrote:
> Previously, __blkdev_issue_discard() will always returned valid bio,
> after commit e8b4869bc78d ("block: add a blk_alloc_discard_bio helper"),
> it can return bio w/ NULL value, which may trigger panic or warning
> in __submit_discard_cmd(), let's fix to check bio instread of return
> value after __blkdev_issue_discard().

It can only return blk_alloc_discard_bio if the the gfp_mask doesn't
allow sleeping (which isn't the case here), or nr_sect is zero,
which I hope is also not the case as __submit_discard_cmd would
run into various other problems.  So no, I don't think this is
patch makes any sense.
Re: [PATCH] f2fs: fix to check bio after __blkdev_issue_discard()
Posted by Chao Yu 3 days, 19 hours ago
On 11/26/25 14:41, Christoph Hellwig wrote:
> It can only return blk_alloc_discard_bio if the the gfp_mask doesn't
> allow sleeping (which isn't the case here), or nr_sect is zero,
> which I hope is also not the case as __submit_discard_cmd would
> run into various other problems.  So no, I don't think this is
> patch makes any sense.

Oh, I checked details in bio_alloc_bioset() again, it seems I missed
something for mempool_alloc(), as you mentioned, it may only fail due
to caller is in non-sleep context passing gfp w/ GFP_ATOMIC or
GFP_NOWAIT, which is not the case for f2fs discard.

Thanks,