|
@@ -3283,6 +3283,13 @@ static int pool_ctr(struct dm_target *ti, unsigned argc, char **argv)
|
|
|
as.argc = argc;
|
|
as.argc = argc;
|
|
|
as.argv = argv;
|
|
as.argv = argv;
|
|
|
|
|
|
|
|
|
|
+ /* make sure metadata and data are different devices */
|
|
|
|
|
+ if (!strcmp(argv[0], argv[1])) {
|
|
|
|
|
+ ti->error = "Error setting metadata or data device";
|
|
|
|
|
+ r = -EINVAL;
|
|
|
|
|
+ goto out_unlock;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/*
|
|
/*
|
|
|
* Set default pool features.
|
|
* Set default pool features.
|
|
|
*/
|
|
*/
|
|
@@ -4167,6 +4174,12 @@ static int thin_ctr(struct dm_target *ti, unsigned argc, char **argv)
|
|
|
tc->sort_bio_list = RB_ROOT;
|
|
tc->sort_bio_list = RB_ROOT;
|
|
|
|
|
|
|
|
if (argc == 3) {
|
|
if (argc == 3) {
|
|
|
|
|
+ if (!strcmp(argv[0], argv[2])) {
|
|
|
|
|
+ ti->error = "Error setting origin device";
|
|
|
|
|
+ r = -EINVAL;
|
|
|
|
|
+ goto bad_origin_dev;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
r = dm_get_device(ti, argv[2], FMODE_READ, &origin_dev);
|
|
r = dm_get_device(ti, argv[2], FMODE_READ, &origin_dev);
|
|
|
if (r) {
|
|
if (r) {
|
|
|
ti->error = "Error opening origin device";
|
|
ti->error = "Error opening origin device";
|