Btrfs: rework error handling in btrfs_mount()
Commits
6c41761f and
45ea6095 introduced the possibility of NULL pointer
dereference on error paths, also we would leave all devices busy and
leak fs_info with all sub-structures on error when trying to mount an
already mounted fs to a different directory.
Fix this by doing all allocations before trying to open any of the
devices, adjust error path for mount-already-mounted-fs case.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit
04d21a244fdf79d0ac892eaaa9a46b682467277c)