Btrfs: don't drop path when printing out tree errors in scrub

A user reported a panic where we were panicing somewhere in
tree_backref_for_extent from scrub_print_warning. He only captured the trace
but looking at scrub_print_warning we drop the path right before we mess with
the extent buffer to print out a bunch of stuff, which isn't right. So fix this
by dropping the path after we use the eb if we need to. Thanks,

Cc: stable@vger.kernel.org
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>

authored by Josef Bacik and committed by Chris Mason d8fe29e9 82d130ff

+2 -1
+2 -1
fs/btrfs/scrub.c
··· 542 542 eb = path->nodes[0]; 543 543 ei = btrfs_item_ptr(eb, path->slots[0], struct btrfs_extent_item); 544 544 item_size = btrfs_item_size_nr(eb, path->slots[0]); 545 - btrfs_release_path(path); 546 545 547 546 if (flags & BTRFS_EXTENT_FLAG_TREE_BLOCK) { 548 547 do { ··· 557 558 ret < 0 ? -1 : ref_level, 558 559 ret < 0 ? -1 : ref_root); 559 560 } while (ret != 1); 561 + btrfs_release_path(path); 560 562 } else { 563 + btrfs_release_path(path); 561 564 swarn.path = path; 562 565 swarn.dev = dev; 563 566 iterate_extent_inodes(fs_info, found_key.objectid,