on 01/20/2009 02:16 AM, Zach Carter wrote: > We should probably just get an informative error message here, not a segfault. > > Also, I got the same segfault when running "btrfsck -h" (it was looking for a > file named "-h". I'd be happy to contribute a getopts patch, if that is > desired. > > -Zach > > [zcar...@nudj btrfs-progs-unstable]$ touch foo > [zcar...@nudj btrfs-progs-unstable]$ ./btrfsck ./foo > No valid Btrfs found on ./foo > Segmentation fault > [zcar...@nudj btrfs-progs-unstable]$ gdb ./btrfsck > GNU gdb Fedora (6.8-29.fc10) > Copyright (C) 2008 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "x86_64-redhat-linux-gnu"... > (gdb) run ./foo > Starting program: /opt/src/btrfs-progs-unstable/btrfsck ./foo > No valid Btrfs found on ./foo > > Program received signal SIGSEGV, Segmentation fault. > check_extents (root=0x0) at btrfsck.c:2006 > 2006 add_root_to_pending(root->fs_info->tree_root->node, bits, > bits_nr, > (gdb)
I think the following patch can fix this problem. Signed-off-by: Shen Feng <s...@cn.fujitsu.com> --- btrfsck.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/btrfsck.c b/btrfsck.c index 4a41e6d..c95fe83 100644 --- a/btrfsck.c +++ b/btrfsck.c @@ -2074,6 +2074,8 @@ int main(int ac, char **av) radix_tree_init(); root = open_ctree(av[1], 0, 0); + if (!root) + return 1; ret = check_extents(root); if (ret) -- 1.6.0.6 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html