Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm-ima: more strlen() drops

Following commit ebbd17695e9e ("dm: ima: avoid extra calls to
strlen()"), convert 'dm_ima_alloc_and_copy_capacity_str()' to
return the number of characters emitted by 'scnprintf()' and
simplify the users accordingly. Compile tested only.

Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Reviewed-by: Hou Tao <houtao1@huawei.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>

authored by

Dmitry Antipov and committed by
Mikulas Patocka
a3191475 5d1c8294

+16 -24
+16 -24
drivers/md/dm-ima.c
··· 157 157 if (!(*capacity_str)) 158 158 return -ENOMEM; 159 159 160 - scnprintf(*capacity_str, DM_IMA_DEVICE_BUF_LEN, "current_device_capacity=%llu;", 161 - capacity); 162 - 163 - return 0; 160 + return scnprintf(*capacity_str, DM_IMA_DEVICE_BUF_LEN, "current_device_capacity=%llu;", 161 + capacity); 164 162 } 165 163 166 164 /* ··· 369 371 { 370 372 char *device_table_data, *dev_name = NULL, *dev_uuid = NULL, *capacity_str = NULL; 371 373 char active[] = "active_table_hash="; 372 - unsigned int active_len = strlen(active), capacity_len = 0; 374 + unsigned int active_len = strlen(active); 373 375 unsigned int l = 0; 374 376 bool noio = true; 375 377 bool nodata = true; 376 - int r; 378 + int capacity_len; 377 379 378 380 device_table_data = dm_ima_alloc(DM_IMA_DEVICE_BUF_LEN, GFP_KERNEL, noio); 379 381 if (!device_table_data) 380 382 return; 381 383 382 - r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); 383 - if (r) 384 + capacity_len = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); 385 + if (capacity_len < 0) 384 386 goto error; 385 387 386 388 memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len); ··· 443 445 } 444 446 445 447 if (nodata) { 446 - r = dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio); 447 - if (r) 448 + if (dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio)) 448 449 goto error; 449 450 450 451 l = scnprintf(device_table_data, DM_IMA_DEVICE_BUF_LEN, ··· 451 454 DM_IMA_VERSION_STR, dev_name, dev_uuid); 452 455 } 453 456 454 - capacity_len = strlen(capacity_str); 455 457 memcpy(device_table_data + l, capacity_str, capacity_len); 456 458 l += capacity_len; 457 459 ··· 479 483 unsigned int device_active_len = strlen(device_active_str); 480 484 unsigned int device_inactive_len = strlen(device_inactive_str); 481 485 unsigned int remove_all_len = strlen(remove_all_str); 482 - unsigned int capacity_len = 0; 483 486 unsigned int l = 0; 484 487 bool noio = true; 485 488 bool nodata = true; 486 - int r; 489 + int capacity_len; 487 490 488 491 device_table_data = dm_ima_alloc(DM_IMA_DEVICE_BUF_LEN*2, GFP_KERNEL, noio); 489 492 if (!device_table_data) 490 493 goto exit; 491 494 492 - r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); 493 - if (r) { 495 + capacity_len = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); 496 + if (capacity_len < 0) { 494 497 kfree(device_table_data); 495 498 goto exit; 496 499 } ··· 565 570 memcpy(device_table_data + l, remove_all ? "y;" : "n;", 2); 566 571 l += 2; 567 572 568 - capacity_len = strlen(capacity_str); 569 573 memcpy(device_table_data + l, capacity_str, capacity_len); 570 574 l += capacity_len; 571 575 ··· 596 602 */ 597 603 void dm_ima_measure_on_table_clear(struct mapped_device *md, bool new_map) 598 604 { 599 - unsigned int l = 0, capacity_len = 0; 605 + unsigned int l = 0; 600 606 char *device_table_data = NULL, *dev_name = NULL, *dev_uuid = NULL, *capacity_str = NULL; 601 607 char inactive_str[] = "inactive_table_hash="; 602 608 unsigned int inactive_len = strlen(inactive_str); 603 609 bool noio = true; 604 610 bool nodata = true; 605 - int r; 611 + int capacity_len; 606 612 607 613 device_table_data = dm_ima_alloc(DM_IMA_DEVICE_BUF_LEN, GFP_KERNEL, noio); 608 614 if (!device_table_data) 609 615 return; 610 616 611 - r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); 612 - if (r) 617 + capacity_len = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); 618 + if (capacity_len < 0) 613 619 goto error1; 614 620 615 621 memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len); ··· 644 650 DM_IMA_VERSION_STR, dev_name, dev_uuid); 645 651 } 646 652 647 - capacity_len = strlen(capacity_str); 648 653 memcpy(device_table_data + l, capacity_str, capacity_len); 649 654 l += capacity_len; 650 655 ··· 696 703 char *old_device_data = NULL, *new_device_data = NULL, *combined_device_data = NULL; 697 704 char *new_dev_name = NULL, *new_dev_uuid = NULL, *capacity_str = NULL; 698 705 bool noio = true; 699 - int r, len; 706 + int len; 700 707 701 708 if (dm_ima_alloc_and_copy_device_data(md, &new_device_data, 702 709 md->ima.active_table.num_targets, noio)) ··· 709 716 if (!combined_device_data) 710 717 goto error; 711 718 712 - r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio); 713 - if (r) 719 + if (dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio) < 0) 714 720 goto error; 715 721 716 722 old_device_data = md->ima.active_table.device_metadata;