Commit 530e3d4a authored by Suchit Karunakaran's avatar Suchit Karunakaran Committed by David Sterba
Browse files

btrfs: fix NULL pointer dereference in do_abort_log_replay()



Coverity reported a NULL pointer dereference issue (CID 1666756) in
do_abort_log_replay(). When btrfs_alloc_path() fails in
replay_one_buffer(), wc->subvol_path is NULL, but btrfs_abort_log_replay()
calls do_abort_log_replay() which unconditionally dereferences
wc->subvol_path when attempting to print debug information. Fix this by
adding a NULL check before dereferencing wc->subvol_path in
do_abort_log_replay().

Fixes: 2753e491 ("btrfs: dump detailed info and specific messages on log replay failures")
Reviewed-by: default avatarFilipe Manana <fdmanana@suse.com>
Signed-off-by: default avatarSuchit Karunakaran <suchitkarunakaran@gmail.com>
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent cefd8092
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -190,7 +190,7 @@ static void do_abort_log_replay(struct walk_control *wc, const char *function,

	btrfs_abort_transaction(wc->trans, error);

	if (wc->subvol_path->nodes[0]) {
	if (wc->subvol_path && wc->subvol_path->nodes[0]) {
		btrfs_crit(fs_info,
			   "subvolume (root %llu) leaf currently being processed:",
			   btrfs_root_id(wc->root));