dm ioctl: forbid multiple device specifiers
authorMikulas Patocka <mpatocka@redhat.com>
Tue, 2 Aug 2011 11:32:06 +0000 (12:32 +0100)
committerAlasdair G Kergon <agk@redhat.com>
Tue, 2 Aug 2011 11:32:06 +0000 (12:32 +0100)
Exactly one of name, uuid or device must be specified when referencing
an existing device.  This removes the ambiguity (risking the wrong
device being updated) if two conflicting parameters were specified.
Previously one parameter got used and any others were ignored silently.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
drivers/md/dm-ioctl.c

index 4c350914f4a058559ed2c4ad49452c953e7d6e72..2e9a3ca37bdd39c6cbaf36f800b77aa3a04a638f 100644 (file)
@@ -739,10 +739,16 @@ static struct hash_cell *__find_device_hash_cell(struct dm_ioctl *param)
        struct hash_cell *hc = NULL;
 
        if (*param->uuid) {
+               if (*param->name || param->dev)
+                       return NULL;
+
                hc = __get_uuid_cell(param->uuid);
                if (!hc)
                        return NULL;
        } else if (*param->name) {
+               if (param->dev)
+                       return NULL;
+
                hc = __get_name_cell(param->name);
                if (!hc)
                        return NULL;