Lines Matching refs:md

67 static int dm_ima_alloc_and_copy_name_uuid(struct mapped_device *md, char **dev_name,
83 r = dm_copy_name_and_uuid(md, *dev_name, *dev_uuid);
102 static int dm_ima_alloc_and_copy_device_data(struct mapped_device *md, char **device_data,
108 r = dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio);
120 dev_name, dev_uuid, md->disk->major, md->disk->first_minor,
121 md->disk->minors, num_targets);
149 static int dm_ima_alloc_and_copy_capacity_str(struct mapped_device *md, char **capacity_str,
154 capacity = get_capacity(md->disk);
169 void dm_ima_reset_data(struct mapped_device *md)
171 memset(&(md->ima), 0, sizeof(md->ima));
172 md->ima.dm_version_str_len = strlen(DM_IMA_VERSION_STR);
212 if (dm_ima_alloc_and_copy_device_data(table->md, &device_data_buf, num_targets, noio))
229 memcpy(ima_buf + l, DM_IMA_VERSION_STR, table->md->ima.dm_version_str_len);
230 l += table->md->ima.dm_version_str_len;
286 memcpy(ima_buf + l, DM_IMA_VERSION_STR, table->md->ima.dm_version_str_len);
287 l += table->md->ima.dm_version_str_len;
321 * Finalize the table hash, and store it in table->md->ima.inactive_table.hash,
339 if (table->md->ima.active_table.hash != table->md->ima.inactive_table.hash)
340 kfree(table->md->ima.inactive_table.hash);
342 table->md->ima.inactive_table.hash = digest_buf;
343 table->md->ima.inactive_table.hash_len = strlen(digest_buf);
344 table->md->ima.inactive_table.num_targets = num_targets;
346 if (table->md->ima.active_table.device_metadata !=
347 table->md->ima.inactive_table.device_metadata)
348 kfree(table->md->ima.inactive_table.device_metadata);
350 table->md->ima.inactive_table.device_metadata = device_data_buf;
351 table->md->ima.inactive_table.device_metadata_len = device_data_buf_len;
369 void dm_ima_measure_on_device_resume(struct mapped_device *md, bool swap)
383 r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
387 memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len);
388 l += md->ima.dm_version_str_len;
391 if (md->ima.active_table.hash != md->ima.inactive_table.hash)
392 kfree(md->ima.active_table.hash);
394 md->ima.active_table.hash = NULL;
395 md->ima.active_table.hash_len = 0;
397 if (md->ima.active_table.device_metadata !=
398 md->ima.inactive_table.device_metadata)
399 kfree(md->ima.active_table.device_metadata);
401 md->ima.active_table.device_metadata = NULL;
402 md->ima.active_table.device_metadata_len = 0;
403 md->ima.active_table.num_targets = 0;
405 if (md->ima.inactive_table.hash) {
406 md->ima.active_table.hash = md->ima.inactive_table.hash;
407 md->ima.active_table.hash_len = md->ima.inactive_table.hash_len;
408 md->ima.inactive_table.hash = NULL;
409 md->ima.inactive_table.hash_len = 0;
412 if (md->ima.inactive_table.device_metadata) {
413 md->ima.active_table.device_metadata =
414 md->ima.inactive_table.device_metadata;
415 md->ima.active_table.device_metadata_len =
416 md->ima.inactive_table.device_metadata_len;
417 md->ima.active_table.num_targets = md->ima.inactive_table.num_targets;
418 md->ima.inactive_table.device_metadata = NULL;
419 md->ima.inactive_table.device_metadata_len = 0;
420 md->ima.inactive_table.num_targets = 0;
424 if (md->ima.active_table.device_metadata) {
425 memcpy(device_table_data + l, md->ima.active_table.device_metadata,
426 md->ima.active_table.device_metadata_len);
427 l += md->ima.active_table.device_metadata_len;
432 if (md->ima.active_table.hash) {
436 memcpy(device_table_data + l, md->ima.active_table.hash,
437 md->ima.active_table.hash_len);
438 l += md->ima.active_table.hash_len;
447 r = dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio);
474 void dm_ima_measure_on_device_remove(struct mapped_device *md, bool remove_all)
497 r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
503 memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len);
504 l += md->ima.dm_version_str_len;
506 if (md->ima.active_table.device_metadata) {
510 memcpy(device_table_data + l, md->ima.active_table.device_metadata,
511 md->ima.active_table.device_metadata_len);
512 l += md->ima.active_table.device_metadata_len;
517 if (md->ima.inactive_table.device_metadata) {
521 memcpy(device_table_data + l, md->ima.inactive_table.device_metadata,
522 md->ima.inactive_table.device_metadata_len);
523 l += md->ima.inactive_table.device_metadata_len;
528 if (md->ima.active_table.hash) {
532 memcpy(device_table_data + l, md->ima.active_table.hash,
533 md->ima.active_table.hash_len);
534 l += md->ima.active_table.hash_len;
542 if (md->ima.inactive_table.hash) {
546 memcpy(device_table_data + l, md->ima.inactive_table.hash,
547 md->ima.inactive_table.hash_len);
548 l += md->ima.inactive_table.hash_len;
561 if (dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio))
585 kfree(md->ima.active_table.device_metadata);
587 if (md->ima.active_table.device_metadata !=
588 md->ima.inactive_table.device_metadata)
589 kfree(md->ima.inactive_table.device_metadata);
591 kfree(md->ima.active_table.hash);
593 if (md->ima.active_table.hash != md->ima.inactive_table.hash)
594 kfree(md->ima.inactive_table.hash);
596 dm_ima_reset_data(md);
605 void dm_ima_measure_on_table_clear(struct mapped_device *md, bool new_map)
619 r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
623 memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len);
624 l += md->ima.dm_version_str_len;
626 if (md->ima.inactive_table.device_metadata_len &&
627 md->ima.inactive_table.hash_len) {
628 memcpy(device_table_data + l, md->ima.inactive_table.device_metadata,
629 md->ima.inactive_table.device_metadata_len);
630 l += md->ima.inactive_table.device_metadata_len;
635 memcpy(device_table_data + l, md->ima.inactive_table.hash,
636 md->ima.inactive_table.hash_len);
638 l += md->ima.inactive_table.hash_len;
647 if (dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio))
663 if (md->ima.inactive_table.hash &&
664 md->ima.inactive_table.hash != md->ima.active_table.hash)
665 kfree(md->ima.inactive_table.hash);
667 md->ima.inactive_table.hash = NULL;
668 md->ima.inactive_table.hash_len = 0;
670 if (md->ima.inactive_table.device_metadata &&
671 md->ima.inactive_table.device_metadata != md->ima.active_table.device_metadata)
672 kfree(md->ima.inactive_table.device_metadata);
674 md->ima.inactive_table.device_metadata = NULL;
675 md->ima.inactive_table.device_metadata_len = 0;
676 md->ima.inactive_table.num_targets = 0;
678 if (md->ima.active_table.hash) {
679 md->ima.inactive_table.hash = md->ima.active_table.hash;
680 md->ima.inactive_table.hash_len = md->ima.active_table.hash_len;
683 if (md->ima.active_table.device_metadata) {
684 md->ima.inactive_table.device_metadata =
685 md->ima.active_table.device_metadata;
686 md->ima.inactive_table.device_metadata_len =
687 md->ima.active_table.device_metadata_len;
688 md->ima.inactive_table.num_targets =
689 md->ima.active_table.num_targets;
704 void dm_ima_measure_on_device_rename(struct mapped_device *md)
711 if (dm_ima_alloc_and_copy_device_data(md, &new_device_data,
712 md->ima.active_table.num_targets, noio))
715 if (dm_ima_alloc_and_copy_name_uuid(md, &new_dev_name, &new_dev_uuid, noio))
722 r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
726 old_device_data = md->ima.active_table.device_metadata;
728 md->ima.active_table.device_metadata = new_device_data;
729 md->ima.active_table.device_metadata_len = strlen(new_device_data);