OSDN Git Service

ANDROID: dm: use name_to_dev_t
authorJeremy Compostella <jeremy.compostella@intel.com>
Fri, 15 Apr 2016 11:32:54 +0000 (13:32 +0200)
committerBadhri Jagan Sridharan <Badhri@google.com>
Wed, 10 Aug 2016 20:25:28 +0000 (13:25 -0700)
This patch makes android_verity_ctr() parse its block device string
parameter with name_to_dev_t().  It allows the use of less hardware
related block device reference like PARTUUID for instance.

Change-Id: Idb84453e70cc11abd5ef3a0adfbb16f8b5feaf07
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
drivers/md/dm-android-verity.c

index b7e0595..9c26cbb 100644 (file)
@@ -613,8 +613,7 @@ static int android_verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
        /* One for specifying number of opt args and one for mode */
        sector_t data_sectors;
        u32 data_block_size;
-       unsigned int major, minor,
-       no_of_args = VERITY_TABLE_ARGS + 2 + VERITY_TABLE_OPT_FEC_ARGS;
+       unsigned int no_of_args = VERITY_TABLE_ARGS + 2 + VERITY_TABLE_OPT_FEC_ARGS;
        struct fec_header uninitialized_var(fec);
        struct fec_ecc_metadata uninitialized_var(ecc);
        char buf[FEC_ARG_LENGTH], *buf_ptr;
@@ -630,13 +629,11 @@ static int android_verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
        key_id = argv[0];
        strreplace(argv[0], '#', ' ');
 
-       if (sscanf(argv[1], "%u:%u%c", &major, &minor, &dummy) == 2) {
-               dev = MKDEV(major, minor);
-               if (MAJOR(dev) != major || MINOR(dev) != minor) {
-                       DMERR("Incorrect bdev major minor number");
-                       handle_error();
-                       return -EOVERFLOW;
-               }
+       dev = name_to_dev_t(argv[1]);
+       if (!dev) {
+               DMERR("no dev found for %s", argv[1]);
+               handle_error();
+               return -EINVAL;
        }
 
        DMINFO("key:%s dev:%s", argv[0], argv[1]);