dm ioctl: assert _hash_lock is held in __hash_remove
Also update dm_early_create() to take _hash_lock when calling both __get_name_cell and __hash_remove -- given dm_early_create()'s early boot usecase this locking isn't about correctness but it allows lockdep_assert_held() to be added to __hash_remove. Signed-off-by: Mike Snitzer <snitzer@kernel.org>
This commit is contained in:
parent
76227f6dc8
commit
69868bebfe
|
@ -310,6 +310,8 @@ static struct dm_table *__hash_remove(struct hash_cell *hc)
|
|||
struct dm_table *table;
|
||||
int srcu_idx;
|
||||
|
||||
lockdep_assert_held(&_hash_lock);
|
||||
|
||||
/* remove from the dev trees */
|
||||
__unlink_name(hc);
|
||||
__unlink_uuid(hc);
|
||||
|
@ -2263,7 +2265,9 @@ int __init dm_early_create(struct dm_ioctl *dmi,
|
|||
err_destroy_table:
|
||||
dm_table_destroy(t);
|
||||
err_hash_remove:
|
||||
down_write(&_hash_lock);
|
||||
(void) __hash_remove(__get_name_cell(dmi->name));
|
||||
up_write(&_hash_lock);
|
||||
/* release reference from __get_name_cell */
|
||||
dm_put(md);
|
||||
err_destroy_dm:
|
||||
|
|
Loading…
Reference in New Issue