]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
block: loop: don't enable direct-io unless the filesystem supports it
authorDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 22 Sep 2015 19:18:11 +0000 (14:18 -0500)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 22 Sep 2015 19:18:11 +0000 (14:18 -0500)
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 <dave.kleikamp@oracle.com>
drivers/block/loop.c

index 7b326f2a95bf88ccd76e2912408a86932060199d..b967126d28e2076d7fca6c490408837545d60eec 100644 (file)
@@ -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);
 }
 
 /*