Lines Matching refs:md
67 static int dm_ima_alloc_and_copy_name_uuid(struct mapped_device *md, char **dev_name, in dm_ima_alloc_and_copy_name_uuid() argument
83 r = dm_copy_name_and_uuid(md, *dev_name, *dev_uuid); in dm_ima_alloc_and_copy_name_uuid()
102 static int dm_ima_alloc_and_copy_device_data(struct mapped_device *md, char **device_data, in dm_ima_alloc_and_copy_device_data() argument
108 r = dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio); in dm_ima_alloc_and_copy_device_data()
120 dev_name, dev_uuid, md->disk->major, md->disk->first_minor, in dm_ima_alloc_and_copy_device_data()
121 md->disk->minors, num_targets); in dm_ima_alloc_and_copy_device_data()
149 static int dm_ima_alloc_and_copy_capacity_str(struct mapped_device *md, char **capacity_str, in dm_ima_alloc_and_copy_capacity_str() argument
154 capacity = get_capacity(md->disk); in dm_ima_alloc_and_copy_capacity_str()
169 void dm_ima_reset_data(struct mapped_device *md) in dm_ima_reset_data() argument
171 memset(&(md->ima), 0, sizeof(md->ima)); in dm_ima_reset_data()
172 md->ima.dm_version_str_len = strlen(DM_IMA_VERSION_STR); in dm_ima_reset_data()
212 if (dm_ima_alloc_and_copy_device_data(table->md, &device_data_buf, num_targets, noio)) in dm_ima_measure_on_table_load()
229 memcpy(ima_buf + l, DM_IMA_VERSION_STR, table->md->ima.dm_version_str_len); in dm_ima_measure_on_table_load()
230 l += table->md->ima.dm_version_str_len; in dm_ima_measure_on_table_load()
289 memcpy(ima_buf + l, DM_IMA_VERSION_STR, table->md->ima.dm_version_str_len); in dm_ima_measure_on_table_load()
290 l += table->md->ima.dm_version_str_len; in dm_ima_measure_on_table_load()
342 if (table->md->ima.active_table.hash != table->md->ima.inactive_table.hash) in dm_ima_measure_on_table_load()
343 kfree(table->md->ima.inactive_table.hash); in dm_ima_measure_on_table_load()
345 table->md->ima.inactive_table.hash = digest_buf; in dm_ima_measure_on_table_load()
346 table->md->ima.inactive_table.hash_len = strlen(digest_buf); in dm_ima_measure_on_table_load()
347 table->md->ima.inactive_table.num_targets = num_targets; in dm_ima_measure_on_table_load()
349 if (table->md->ima.active_table.device_metadata != in dm_ima_measure_on_table_load()
350 table->md->ima.inactive_table.device_metadata) in dm_ima_measure_on_table_load()
351 kfree(table->md->ima.inactive_table.device_metadata); in dm_ima_measure_on_table_load()
353 table->md->ima.inactive_table.device_metadata = device_data_buf; in dm_ima_measure_on_table_load()
354 table->md->ima.inactive_table.device_metadata_len = device_data_buf_len; in dm_ima_measure_on_table_load()
372 void dm_ima_measure_on_device_resume(struct mapped_device *md, bool swap) in dm_ima_measure_on_device_resume() argument
386 r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); in dm_ima_measure_on_device_resume()
390 memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len); in dm_ima_measure_on_device_resume()
391 l += md->ima.dm_version_str_len; in dm_ima_measure_on_device_resume()
394 if (md->ima.active_table.hash != md->ima.inactive_table.hash) in dm_ima_measure_on_device_resume()
395 kfree(md->ima.active_table.hash); in dm_ima_measure_on_device_resume()
397 md->ima.active_table.hash = NULL; in dm_ima_measure_on_device_resume()
398 md->ima.active_table.hash_len = 0; in dm_ima_measure_on_device_resume()
400 if (md->ima.active_table.device_metadata != in dm_ima_measure_on_device_resume()
401 md->ima.inactive_table.device_metadata) in dm_ima_measure_on_device_resume()
402 kfree(md->ima.active_table.device_metadata); in dm_ima_measure_on_device_resume()
404 md->ima.active_table.device_metadata = NULL; in dm_ima_measure_on_device_resume()
405 md->ima.active_table.device_metadata_len = 0; in dm_ima_measure_on_device_resume()
406 md->ima.active_table.num_targets = 0; in dm_ima_measure_on_device_resume()
408 if (md->ima.inactive_table.hash) { in dm_ima_measure_on_device_resume()
409 md->ima.active_table.hash = md->ima.inactive_table.hash; in dm_ima_measure_on_device_resume()
410 md->ima.active_table.hash_len = md->ima.inactive_table.hash_len; in dm_ima_measure_on_device_resume()
411 md->ima.inactive_table.hash = NULL; in dm_ima_measure_on_device_resume()
412 md->ima.inactive_table.hash_len = 0; in dm_ima_measure_on_device_resume()
415 if (md->ima.inactive_table.device_metadata) { in dm_ima_measure_on_device_resume()
416 md->ima.active_table.device_metadata = in dm_ima_measure_on_device_resume()
417 md->ima.inactive_table.device_metadata; in dm_ima_measure_on_device_resume()
418 md->ima.active_table.device_metadata_len = in dm_ima_measure_on_device_resume()
419 md->ima.inactive_table.device_metadata_len; in dm_ima_measure_on_device_resume()
420 md->ima.active_table.num_targets = md->ima.inactive_table.num_targets; in dm_ima_measure_on_device_resume()
421 md->ima.inactive_table.device_metadata = NULL; in dm_ima_measure_on_device_resume()
422 md->ima.inactive_table.device_metadata_len = 0; in dm_ima_measure_on_device_resume()
423 md->ima.inactive_table.num_targets = 0; in dm_ima_measure_on_device_resume()
427 if (md->ima.active_table.device_metadata) { in dm_ima_measure_on_device_resume()
428 memcpy(device_table_data + l, md->ima.active_table.device_metadata, in dm_ima_measure_on_device_resume()
429 md->ima.active_table.device_metadata_len); in dm_ima_measure_on_device_resume()
430 l += md->ima.active_table.device_metadata_len; in dm_ima_measure_on_device_resume()
435 if (md->ima.active_table.hash) { in dm_ima_measure_on_device_resume()
439 memcpy(device_table_data + l, md->ima.active_table.hash, in dm_ima_measure_on_device_resume()
440 md->ima.active_table.hash_len); in dm_ima_measure_on_device_resume()
441 l += md->ima.active_table.hash_len; in dm_ima_measure_on_device_resume()
450 r = dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio); in dm_ima_measure_on_device_resume()
477 void dm_ima_measure_on_device_remove(struct mapped_device *md, bool remove_all) in dm_ima_measure_on_device_remove() argument
500 r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); in dm_ima_measure_on_device_remove()
506 memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len); in dm_ima_measure_on_device_remove()
507 l += md->ima.dm_version_str_len; in dm_ima_measure_on_device_remove()
509 if (md->ima.active_table.device_metadata) { in dm_ima_measure_on_device_remove()
513 memcpy(device_table_data + l, md->ima.active_table.device_metadata, in dm_ima_measure_on_device_remove()
514 md->ima.active_table.device_metadata_len); in dm_ima_measure_on_device_remove()
515 l += md->ima.active_table.device_metadata_len; in dm_ima_measure_on_device_remove()
520 if (md->ima.inactive_table.device_metadata) { in dm_ima_measure_on_device_remove()
524 memcpy(device_table_data + l, md->ima.inactive_table.device_metadata, in dm_ima_measure_on_device_remove()
525 md->ima.inactive_table.device_metadata_len); in dm_ima_measure_on_device_remove()
526 l += md->ima.inactive_table.device_metadata_len; in dm_ima_measure_on_device_remove()
531 if (md->ima.active_table.hash) { in dm_ima_measure_on_device_remove()
535 memcpy(device_table_data + l, md->ima.active_table.hash, in dm_ima_measure_on_device_remove()
536 md->ima.active_table.hash_len); in dm_ima_measure_on_device_remove()
537 l += md->ima.active_table.hash_len; in dm_ima_measure_on_device_remove()
545 if (md->ima.inactive_table.hash) { in dm_ima_measure_on_device_remove()
549 memcpy(device_table_data + l, md->ima.inactive_table.hash, in dm_ima_measure_on_device_remove()
550 md->ima.inactive_table.hash_len); in dm_ima_measure_on_device_remove()
551 l += md->ima.inactive_table.hash_len; in dm_ima_measure_on_device_remove()
564 if (dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio)) in dm_ima_measure_on_device_remove()
588 kfree(md->ima.active_table.device_metadata); in dm_ima_measure_on_device_remove()
590 if (md->ima.active_table.device_metadata != in dm_ima_measure_on_device_remove()
591 md->ima.inactive_table.device_metadata) in dm_ima_measure_on_device_remove()
592 kfree(md->ima.inactive_table.device_metadata); in dm_ima_measure_on_device_remove()
594 kfree(md->ima.active_table.hash); in dm_ima_measure_on_device_remove()
596 if (md->ima.active_table.hash != md->ima.inactive_table.hash) in dm_ima_measure_on_device_remove()
597 kfree(md->ima.inactive_table.hash); in dm_ima_measure_on_device_remove()
599 dm_ima_reset_data(md); in dm_ima_measure_on_device_remove()
608 void dm_ima_measure_on_table_clear(struct mapped_device *md, bool new_map) in dm_ima_measure_on_table_clear() argument
622 r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); in dm_ima_measure_on_table_clear()
626 memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len); in dm_ima_measure_on_table_clear()
627 l += md->ima.dm_version_str_len; in dm_ima_measure_on_table_clear()
629 if (md->ima.inactive_table.device_metadata_len && in dm_ima_measure_on_table_clear()
630 md->ima.inactive_table.hash_len) { in dm_ima_measure_on_table_clear()
631 memcpy(device_table_data + l, md->ima.inactive_table.device_metadata, in dm_ima_measure_on_table_clear()
632 md->ima.inactive_table.device_metadata_len); in dm_ima_measure_on_table_clear()
633 l += md->ima.inactive_table.device_metadata_len; in dm_ima_measure_on_table_clear()
638 memcpy(device_table_data + l, md->ima.inactive_table.hash, in dm_ima_measure_on_table_clear()
639 md->ima.inactive_table.hash_len); in dm_ima_measure_on_table_clear()
641 l += md->ima.inactive_table.hash_len; in dm_ima_measure_on_table_clear()
650 if (dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio)) in dm_ima_measure_on_table_clear()
666 if (md->ima.inactive_table.hash && in dm_ima_measure_on_table_clear()
667 md->ima.inactive_table.hash != md->ima.active_table.hash) in dm_ima_measure_on_table_clear()
668 kfree(md->ima.inactive_table.hash); in dm_ima_measure_on_table_clear()
670 md->ima.inactive_table.hash = NULL; in dm_ima_measure_on_table_clear()
671 md->ima.inactive_table.hash_len = 0; in dm_ima_measure_on_table_clear()
673 if (md->ima.inactive_table.device_metadata && in dm_ima_measure_on_table_clear()
674 md->ima.inactive_table.device_metadata != md->ima.active_table.device_metadata) in dm_ima_measure_on_table_clear()
675 kfree(md->ima.inactive_table.device_metadata); in dm_ima_measure_on_table_clear()
677 md->ima.inactive_table.device_metadata = NULL; in dm_ima_measure_on_table_clear()
678 md->ima.inactive_table.device_metadata_len = 0; in dm_ima_measure_on_table_clear()
679 md->ima.inactive_table.num_targets = 0; in dm_ima_measure_on_table_clear()
681 if (md->ima.active_table.hash) { in dm_ima_measure_on_table_clear()
682 md->ima.inactive_table.hash = md->ima.active_table.hash; in dm_ima_measure_on_table_clear()
683 md->ima.inactive_table.hash_len = md->ima.active_table.hash_len; in dm_ima_measure_on_table_clear()
686 if (md->ima.active_table.device_metadata) { in dm_ima_measure_on_table_clear()
687 md->ima.inactive_table.device_metadata = in dm_ima_measure_on_table_clear()
688 md->ima.active_table.device_metadata; in dm_ima_measure_on_table_clear()
689 md->ima.inactive_table.device_metadata_len = in dm_ima_measure_on_table_clear()
690 md->ima.active_table.device_metadata_len; in dm_ima_measure_on_table_clear()
691 md->ima.inactive_table.num_targets = in dm_ima_measure_on_table_clear()
692 md->ima.active_table.num_targets; in dm_ima_measure_on_table_clear()
707 void dm_ima_measure_on_device_rename(struct mapped_device *md) in dm_ima_measure_on_device_rename() argument
714 if (dm_ima_alloc_and_copy_device_data(md, &new_device_data, in dm_ima_measure_on_device_rename()
715 md->ima.active_table.num_targets, noio)) in dm_ima_measure_on_device_rename()
718 if (dm_ima_alloc_and_copy_name_uuid(md, &new_dev_name, &new_dev_uuid, noio)) in dm_ima_measure_on_device_rename()
725 r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); in dm_ima_measure_on_device_rename()
729 old_device_data = md->ima.active_table.device_metadata; in dm_ima_measure_on_device_rename()
731 md->ima.active_table.device_metadata = new_device_data; in dm_ima_measure_on_device_rename()
732 md->ima.active_table.device_metadata_len = strlen(new_device_data); in dm_ima_measure_on_device_rename()