From: Dave Kleikamp Date: Tue, 22 Sep 2015 19:18:11 +0000 (-0500) Subject: block: loop: don't enable direct-io unless the filesystem supports it X-Git-Tag: v4.1.12-92~272^2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=7cbfba44f6ca2d707ba45c96e5273d5b0b02f1dc;p=users%2Fjedix%2Flinux-maple.git block: loop: don't enable direct-io unless the filesystem supports it Commit 3ddce635 was over-aggressive and enabled direct-io in the loop driver even if the underlying file system didn't support it. This would cause a NULL dereference of aops->direct_IO. Signed-off-by: Dave Kleikamp --- diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 7b326f2a95bf8..b967126d28e20 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -555,7 +555,10 @@ static inline void loop_update_dio(struct loop_device *lo) /* * UEK kernel will use direct-io whenever possible */ - __loop_update_dio(lo, 1); + struct address_space *mapping = lo->lo_backing_file->f_mapping; + bool supports_dio = mapping->a_ops->direct_IO != NULL; + + __loop_update_dio(lo, supports_dio); } /*