dax: never rely on bh.b_dev being set by get_block()
authorRoss Zwisler <ross.zwisler@linux.intel.com>
Fri, 22 Jan 2016 23:10:59 +0000 (15:10 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 23 Jan 2016 01:02:18 +0000 (17:02 -0800)
commiteab95db69d334745d3034072f4a7204084136c88
tree3d54065f19a096d64caaf90793ceec9d527060a2
parent5eb88dca9ce4546bdfca6e5defcd50fbe8ea8411
dax: never rely on bh.b_dev being set by get_block()

Previously in DAX we assumed that calls to get_block() would set
bh.b_bdev, and we would then use that value even in error cases for
debugging.  This caused a NULL pointer dereference in __dax_dbg() which
was fixed by a previous commit, but that commit only changed the one
place where we were hitting an error.

Instead, update dax.c so that we always initialize bh.b_bdev as best we
can based on the information that DAX has.  get_block() may or may not
update to a new value, but this at least lets us get something helpful
from bh.b_bdev for error messages and not have to worry about whether it
was set by get_block() or not.

Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reported-by: Jan Kara <jack@suse.cz>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/dax.c