From: Jens Axboe Date: Tue, 10 Nov 2015 17:14:38 +0000 (-0700) Subject: direct-io: be sure to assign dio->bio_bdev for both paths X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=c1c534609fe8a859f9c8108a5591e6e8a97e34d1;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git direct-io: be sure to assign dio->bio_bdev for both paths btrfs sets ->submit_io(), and we failed to set the block dev for that path. That resulted in a potential NULL dereference when we later wait for IO in dio_await_one(). Reported-by: kernel test robot Signed-off-by: Jens Axboe --- diff --git a/fs/direct-io.c b/fs/direct-io.c index 7025029c666f..15381c474a11 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -399,14 +399,14 @@ static inline void dio_bio_submit(struct dio *dio, struct dio_submit *sdio) if (dio->is_async && dio->rw == READ && dio->should_dirty) bio_set_pages_dirty(bio); + dio->bio_bdev = bio->bi_bdev; + if (sdio->submit_io) { sdio->submit_io(dio->rw, bio, dio->inode, sdio->logical_offset_in_bio); dio->bio_cookie = BLK_QC_T_NONE; - } else { + } else dio->bio_cookie = submit_bio(dio->rw, bio); - dio->bio_bdev = bio->bi_bdev; - } sdio->bio = NULL; sdio->boundary = 0;