On Mon 09-10-23 17:45:57, Lizhi Xu wrote: > When sbi->flag is JFS_NOINTEGRITY in lmLogOpen(), log->bdev_handle can't > be inited, so it value will be NULL. > Therefore, add the "log ->no_integrity=1" judgment in lbmStartIO() to avoid such > problems. > > Reported-and-tested-by: syzbot+23bc20037854bb335d59@xxxxxxxxxxxxxxxxxxxxxxxxx > Signed-off-by: Lizhi Xu <lizhi.xu@xxxxxxxxxxxxx> Ah, good catch. Who would think someone creates bios for NULL bdev only to release them shortly afterwards ;). Anyway the fix looks good. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Christian, please pick up this fixup into your tree. Thanks! Honza > --- > fs/jfs/jfs_logmgr.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/fs/jfs/jfs_logmgr.c b/fs/jfs/jfs_logmgr.c > index c911d838b8ec..c41a76164f84 100644 > --- a/fs/jfs/jfs_logmgr.c > +++ b/fs/jfs/jfs_logmgr.c > @@ -2110,10 +2110,14 @@ static void lbmStartIO(struct lbuf * bp) > { > struct bio *bio; > struct jfs_log *log = bp->l_log; > + struct block_device *bdev = NULL; > > jfs_info("lbmStartIO"); > > - bio = bio_alloc(log->bdev_handle->bdev, 1, REQ_OP_WRITE | REQ_SYNC, > + if (!log->no_integrity) > + bdev = log->bdev_handle->bdev; > + > + bio = bio_alloc(bdev, 1, REQ_OP_WRITE | REQ_SYNC, > GFP_NOFS); > bio->bi_iter.bi_sector = bp->l_blkno << (log->l2bsize - 9); > __bio_add_page(bio, bp->l_page, LOGPSIZE, bp->l_offset); > -- > 2.25.1 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR