mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
dm-ima: remove new_map from dm_ima_measure_on_device_clear
Now that two processes can't modify md->ima in dm_ima_measure_on_device_clear() at the same time, there's no need to track if an inactive table was actually removed. We might as well clean it up unconditionally, on the off chance that a previous ima measurement failed and left md->ima.inactive_table behind. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
This commit is contained in:
parent
5534cac9b5
commit
c90decb190
|
|
@ -549,7 +549,7 @@ void dm_ima_measure_on_device_remove(struct mapped_device *md, bool remove_all,
|
|||
/*
|
||||
* Measure ima data on table clear.
|
||||
*/
|
||||
void dm_ima_measure_on_table_clear(struct mapped_device *md, bool new_map,
|
||||
void dm_ima_measure_on_table_clear(struct mapped_device *md,
|
||||
struct dm_ima_context *context)
|
||||
{
|
||||
unsigned int l = 0;
|
||||
|
|
@ -609,11 +609,9 @@ void dm_ima_measure_on_table_clear(struct mapped_device *md, bool new_map,
|
|||
|
||||
dm_ima_measure_data("dm_table_clear", device_table_data, l, noio);
|
||||
|
||||
if (new_map) {
|
||||
kfree(md->ima.inactive_table.hash);
|
||||
kfree(md->ima.inactive_table.device_metadata);
|
||||
memset(&md->ima.inactive_table, 0, sizeof(md->ima.inactive_table));
|
||||
}
|
||||
kfree(md->ima.inactive_table.hash);
|
||||
kfree(md->ima.inactive_table.device_metadata);
|
||||
memset(&md->ima.inactive_table, 0, sizeof(md->ima.inactive_table));
|
||||
|
||||
error:
|
||||
kfree(capacity_str);
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ void dm_ima_measure_on_device_resume(struct mapped_device *md, bool swap,
|
|||
void dm_ima_measure_on_device_remove(struct mapped_device *md, bool remove_all,
|
||||
struct dm_ima_context *context,
|
||||
unsigned int idx);
|
||||
void dm_ima_measure_on_table_clear(struct mapped_device *md, bool new_map,
|
||||
void dm_ima_measure_on_table_clear(struct mapped_device *md,
|
||||
struct dm_ima_context *context);
|
||||
void dm_ima_measure_on_device_rename(struct mapped_device *md,
|
||||
struct dm_ima_context *context);
|
||||
|
|
@ -108,7 +108,6 @@ static inline void dm_ima_measure_on_device_remove(struct mapped_device *md,
|
|||
struct dm_ima_context *context,
|
||||
unsigned int idx) {}
|
||||
static inline void dm_ima_measure_on_table_clear(struct mapped_device *md,
|
||||
bool new_map,
|
||||
struct dm_ima_context *context) {}
|
||||
static inline void dm_ima_measure_on_device_rename(struct mapped_device *md,
|
||||
struct dm_ima_context *context) {}
|
||||
|
|
|
|||
|
|
@ -1741,7 +1741,6 @@ static int table_clear(struct file *filp, struct dm_ioctl *param, size_t param_s
|
|||
struct hash_cell *hc;
|
||||
struct mapped_device *md;
|
||||
struct dm_table *old_map = NULL;
|
||||
bool has_new_map = false;
|
||||
struct dm_ima_context *ima_context = NULL;
|
||||
|
||||
dm_ima_alloc_context(&ima_context, true);
|
||||
|
|
@ -1758,13 +1757,12 @@ static int table_clear(struct file *filp, struct dm_ioctl *param, size_t param_s
|
|||
if (hc->new_map) {
|
||||
old_map = hc->new_map;
|
||||
hc->new_map = NULL;
|
||||
has_new_map = true;
|
||||
}
|
||||
|
||||
dm_ima_init_context(hc, ima_context, false);
|
||||
md = hc->md;
|
||||
up_write(&_hash_lock);
|
||||
dm_ima_measure_on_table_clear(md, has_new_map, ima_context);
|
||||
dm_ima_measure_on_table_clear(md, ima_context);
|
||||
dm_ima_free_context(ima_context);
|
||||
|
||||
param->flags &= ~DM_INACTIVE_PRESENT_FLAG;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user