dm-ima: more strlen() drops
Following commit ebbd17695e ("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>
This commit is contained in:
committed by
Mikulas Patocka
parent
5d1c82943f
commit
a3191475d1
+16
-24
@@ -157,10 +157,8 @@ static int dm_ima_alloc_and_copy_capacity_str(struct mapped_device *md, char **c
|
||||
if (!(*capacity_str))
|
||||
return -ENOMEM;
|
||||
|
||||
scnprintf(*capacity_str, DM_IMA_DEVICE_BUF_LEN, "current_device_capacity=%llu;",
|
||||
capacity);
|
||||
|
||||
return 0;
|
||||
return scnprintf(*capacity_str, DM_IMA_DEVICE_BUF_LEN, "current_device_capacity=%llu;",
|
||||
capacity);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -371,18 +369,18 @@ void dm_ima_measure_on_device_resume(struct mapped_device *md, bool swap)
|
||||
{
|
||||
char *device_table_data, *dev_name = NULL, *dev_uuid = NULL, *capacity_str = NULL;
|
||||
char active[] = "active_table_hash=";
|
||||
unsigned int active_len = strlen(active), capacity_len = 0;
|
||||
unsigned int active_len = strlen(active);
|
||||
unsigned int l = 0;
|
||||
bool noio = true;
|
||||
bool nodata = true;
|
||||
int r;
|
||||
int capacity_len;
|
||||
|
||||
device_table_data = dm_ima_alloc(DM_IMA_DEVICE_BUF_LEN, GFP_KERNEL, noio);
|
||||
if (!device_table_data)
|
||||
return;
|
||||
|
||||
r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
|
||||
if (r)
|
||||
capacity_len = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
|
||||
if (capacity_len < 0)
|
||||
goto error;
|
||||
|
||||
memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len);
|
||||
@@ -445,8 +443,7 @@ void dm_ima_measure_on_device_resume(struct mapped_device *md, bool swap)
|
||||
}
|
||||
|
||||
if (nodata) {
|
||||
r = dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio);
|
||||
if (r)
|
||||
if (dm_ima_alloc_and_copy_name_uuid(md, &dev_name, &dev_uuid, noio))
|
||||
goto error;
|
||||
|
||||
l = scnprintf(device_table_data, DM_IMA_DEVICE_BUF_LEN,
|
||||
@@ -454,7 +451,6 @@ void dm_ima_measure_on_device_resume(struct mapped_device *md, bool swap)
|
||||
DM_IMA_VERSION_STR, dev_name, dev_uuid);
|
||||
}
|
||||
|
||||
capacity_len = strlen(capacity_str);
|
||||
memcpy(device_table_data + l, capacity_str, capacity_len);
|
||||
l += capacity_len;
|
||||
|
||||
@@ -483,18 +479,17 @@ void dm_ima_measure_on_device_remove(struct mapped_device *md, bool remove_all)
|
||||
unsigned int device_active_len = strlen(device_active_str);
|
||||
unsigned int device_inactive_len = strlen(device_inactive_str);
|
||||
unsigned int remove_all_len = strlen(remove_all_str);
|
||||
unsigned int capacity_len = 0;
|
||||
unsigned int l = 0;
|
||||
bool noio = true;
|
||||
bool nodata = true;
|
||||
int r;
|
||||
int capacity_len;
|
||||
|
||||
device_table_data = dm_ima_alloc(DM_IMA_DEVICE_BUF_LEN*2, GFP_KERNEL, noio);
|
||||
if (!device_table_data)
|
||||
goto exit;
|
||||
|
||||
r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
|
||||
if (r) {
|
||||
capacity_len = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
|
||||
if (capacity_len < 0) {
|
||||
kfree(device_table_data);
|
||||
goto exit;
|
||||
}
|
||||
@@ -570,7 +565,6 @@ void dm_ima_measure_on_device_remove(struct mapped_device *md, bool remove_all)
|
||||
memcpy(device_table_data + l, remove_all ? "y;" : "n;", 2);
|
||||
l += 2;
|
||||
|
||||
capacity_len = strlen(capacity_str);
|
||||
memcpy(device_table_data + l, capacity_str, capacity_len);
|
||||
l += capacity_len;
|
||||
|
||||
@@ -602,20 +596,20 @@ exit:
|
||||
*/
|
||||
void dm_ima_measure_on_table_clear(struct mapped_device *md, bool new_map)
|
||||
{
|
||||
unsigned int l = 0, capacity_len = 0;
|
||||
unsigned int l = 0;
|
||||
char *device_table_data = NULL, *dev_name = NULL, *dev_uuid = NULL, *capacity_str = NULL;
|
||||
char inactive_str[] = "inactive_table_hash=";
|
||||
unsigned int inactive_len = strlen(inactive_str);
|
||||
bool noio = true;
|
||||
bool nodata = true;
|
||||
int r;
|
||||
int capacity_len;
|
||||
|
||||
device_table_data = dm_ima_alloc(DM_IMA_DEVICE_BUF_LEN, GFP_KERNEL, noio);
|
||||
if (!device_table_data)
|
||||
return;
|
||||
|
||||
r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
|
||||
if (r)
|
||||
capacity_len = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
|
||||
if (capacity_len < 0)
|
||||
goto error1;
|
||||
|
||||
memcpy(device_table_data + l, DM_IMA_VERSION_STR, md->ima.dm_version_str_len);
|
||||
@@ -650,7 +644,6 @@ void dm_ima_measure_on_table_clear(struct mapped_device *md, bool new_map)
|
||||
DM_IMA_VERSION_STR, dev_name, dev_uuid);
|
||||
}
|
||||
|
||||
capacity_len = strlen(capacity_str);
|
||||
memcpy(device_table_data + l, capacity_str, capacity_len);
|
||||
l += capacity_len;
|
||||
|
||||
@@ -703,7 +696,7 @@ void dm_ima_measure_on_device_rename(struct mapped_device *md)
|
||||
char *old_device_data = NULL, *new_device_data = NULL, *combined_device_data = NULL;
|
||||
char *new_dev_name = NULL, *new_dev_uuid = NULL, *capacity_str = NULL;
|
||||
bool noio = true;
|
||||
int r, len;
|
||||
int len;
|
||||
|
||||
if (dm_ima_alloc_and_copy_device_data(md, &new_device_data,
|
||||
md->ima.active_table.num_targets, noio))
|
||||
@@ -716,8 +709,7 @@ void dm_ima_measure_on_device_rename(struct mapped_device *md)
|
||||
if (!combined_device_data)
|
||||
goto error;
|
||||
|
||||
r = dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio);
|
||||
if (r)
|
||||
if (dm_ima_alloc_and_copy_capacity_str(md, &capacity_str, noio) < 0)
|
||||
goto error;
|
||||
|
||||
old_device_data = md->ima.active_table.device_metadata;
|
||||
|
||||
Reference in New Issue
Block a user