Loading drivers/md/dm-default-key.c +25 −5 Original line number Diff line number Diff line Loading @@ -133,9 +133,11 @@ static int default_key_ctr_optional(struct dm_target *ti, return 0; } void default_key_adjust_sector_size_and_iv(char **argv, struct dm_target *ti, struct default_key_c **dkc, u8 *raw, u32 size) static void default_key_adjust_sector_size_and_iv(char **argv, struct dm_target *ti, struct default_key_c **dkc, u8 *raw, u32 size, bool is_legacy) { struct dm_dev *dev; int i; Loading @@ -146,7 +148,7 @@ void default_key_adjust_sector_size_and_iv(char **argv, struct dm_target *ti, dev = (*dkc)->dev; if (!strcmp(argv[0], "AES-256-XTS")) { if (is_legacy) { memcpy(key_new.bytes, raw, size); for (i = 0; i < ARRAY_SIZE(key_new.words); i++) Loading Loading @@ -179,6 +181,24 @@ static int default_key_ctr(struct dm_target *ti, unsigned int argc, char **argv) unsigned long long tmpll; char dummy; int err; char *_argv[10]; bool is_legacy = false; if (argc >= 4 && !strcmp(argv[0], "AES-256-XTS")) { argc = 0; _argv[argc++] = "aes-xts-plain64"; _argv[argc++] = argv[1]; _argv[argc++] = "0"; _argv[argc++] = argv[2]; _argv[argc++] = argv[3]; _argv[argc++] = "3"; _argv[argc++] = "allow_discards"; _argv[argc++] = "sector_size:4096"; _argv[argc++] = "iv_large_sectors"; _argv[argc] = NULL; argv = _argv; is_legacy = true; } if (argc < 5) { ti->error = "Not enough arguments"; Loading Loading @@ -254,7 +274,7 @@ static int default_key_ctr(struct dm_target *ti, unsigned int argc, char **argv) } default_key_adjust_sector_size_and_iv(argv, ti, &dkc, raw_key, raw_key_size); raw_key_size, is_legacy); dkc->sector_bits = ilog2(dkc->sector_size); if (ti->len & ((dkc->sector_size >> SECTOR_SHIFT) - 1)) { Loading Loading
drivers/md/dm-default-key.c +25 −5 Original line number Diff line number Diff line Loading @@ -133,9 +133,11 @@ static int default_key_ctr_optional(struct dm_target *ti, return 0; } void default_key_adjust_sector_size_and_iv(char **argv, struct dm_target *ti, struct default_key_c **dkc, u8 *raw, u32 size) static void default_key_adjust_sector_size_and_iv(char **argv, struct dm_target *ti, struct default_key_c **dkc, u8 *raw, u32 size, bool is_legacy) { struct dm_dev *dev; int i; Loading @@ -146,7 +148,7 @@ void default_key_adjust_sector_size_and_iv(char **argv, struct dm_target *ti, dev = (*dkc)->dev; if (!strcmp(argv[0], "AES-256-XTS")) { if (is_legacy) { memcpy(key_new.bytes, raw, size); for (i = 0; i < ARRAY_SIZE(key_new.words); i++) Loading Loading @@ -179,6 +181,24 @@ static int default_key_ctr(struct dm_target *ti, unsigned int argc, char **argv) unsigned long long tmpll; char dummy; int err; char *_argv[10]; bool is_legacy = false; if (argc >= 4 && !strcmp(argv[0], "AES-256-XTS")) { argc = 0; _argv[argc++] = "aes-xts-plain64"; _argv[argc++] = argv[1]; _argv[argc++] = "0"; _argv[argc++] = argv[2]; _argv[argc++] = argv[3]; _argv[argc++] = "3"; _argv[argc++] = "allow_discards"; _argv[argc++] = "sector_size:4096"; _argv[argc++] = "iv_large_sectors"; _argv[argc] = NULL; argv = _argv; is_legacy = true; } if (argc < 5) { ti->error = "Not enough arguments"; Loading Loading @@ -254,7 +274,7 @@ static int default_key_ctr(struct dm_target *ti, unsigned int argc, char **argv) } default_key_adjust_sector_size_and_iv(argv, ti, &dkc, raw_key, raw_key_size); raw_key_size, is_legacy); dkc->sector_bits = ilog2(dkc->sector_size); if (ti->len & ((dkc->sector_size >> SECTOR_SHIFT) - 1)) { Loading