Wang Shilong
2013-Dec-12 07:47 UTC
[PATCH] Btrfs-progs: add sanity checks for btrfs device operations
Make sure we are a block device firstly, this can avoid some unnecessary ioctls operations. Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com> --- cmds-device.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cmds-device.c b/cmds-device.c index bc4a8dc..ea20919 100644 --- a/cmds-device.c +++ b/cmds-device.c @@ -161,6 +161,12 @@ static int cmd_rm_dev(int argc, char **argv) struct btrfs_ioctl_vol_args arg; int res; + if (!is_block_device(argv[i])) { + fprintf(stderr, + "ERROR: %s is not a block device\n", argv[i]); + ret++; + continue; + } strncpy_null(arg.name, argv[i]); res = ioctl(fdmnt, BTRFS_IOC_RM_DEV, &arg); e = errno; @@ -222,6 +228,12 @@ static int cmd_scan_dev(int argc, char **argv) struct btrfs_ioctl_vol_args args; int ret; + if (!is_block_device(argv[i])) { + fprintf(stderr, + "ERROR: %s is not a block device\n", argv[i]); + close(fd); + return 1; + } printf("Scanning for Btrfs filesystems in ''%s''\n", argv[i]); strncpy_null(args.name, argv[i]); @@ -265,6 +277,12 @@ static int cmd_ready_dev(int argc, char **argv) perror("failed to open /dev/btrfs-control"); return 1; } + if (!is_block_device(argv[1])) { + fprintf(stderr, + "ERROR: %s is not a block device\n", argv[1]); + close(fd); + return 1; + } strncpy(args.name, argv[argc - 1], BTRFS_PATH_NAME_MAX); ret = ioctl(fd, BTRFS_IOC_DEVICES_READY, &args); -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html