Btrfs: avoid null dereference and leaks when bailing from open_ctree()
authorIlya Dryomov <idryomov@gmail.com>
Tue, 8 Nov 2011 22:08:15 +0000 (00:08 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 9 Nov 2011 20:53:38 +0000 (22:53 +0200)
commit4d34b2789538befa45a68a191dc12e0886a69f7d
tree83f8e67439f0562ee9d4aa51cf1a3a0166d78f99
parentf23c8af8ca2789eeb0ab9ea90c214f9694d96cc5
Btrfs: avoid null dereference and leaks when bailing from open_ctree()

Fix bugs introduced by 6c41761f.  Firstly, after failing to allocate any
of the tree roots (first 'goto fail' in open_ctree()) we would
dereference a NULL fs_info pointer in free_fs_info().  Secondly, after
failures from init_srcu_struct(), setup_bdi() and new_inode() we would
leak all earlier allocated roots: fs_info fields haven't been
initialized yet so free_fs_info() is rendered useless.

Fix this by initializing fs_info pointer and fs_info fields before any
allocations happen.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/btrfs/disk-io.c