]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ima: fix wrong zero-assignment during securityfs dentry remove
authorEnrico Bravi <enrico.bravi@polito.it>
Wed, 29 May 2024 18:14:34 +0000 (20:14 +0200)
committerMimi Zohar <zohar@linux.ibm.com>
Mon, 3 Jun 2024 20:37:22 +0000 (16:37 -0400)
In case of error during ima_fs_init() all the dentry already created
are removed. {ascii, binary}_securityfs_measurement_lists are freed
calling for each array the remove_securityfs_measurement_lists(). This
function, at the end, assigns to zero the securityfs_measurement_list_count.
This causes during the second call of remove_securityfs_measurement_lists()
to leave the dentry of the array pending, not removing them correctly,
because the securityfs_measurement_list_count is already zero.

Move the securityfs_measurement_list_count = 0 after the two
remove_securityfs_measurement_lists() calls to correctly remove all the
dentry already allocated.

Fixes: 9fa8e7625008 ("ima: add crypto agility support for template-hash algorithm")
Signed-off-by: Enrico Bravi <enrico.bravi@polito.it>
Reviewed-by: Roberto Sassu <roberto.sassu@huawei.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
security/integrity/ima/ima_fs.c

index abdd22007ed83ba8ccd6b6336fa99baaf6740fee..e4a79a9b2d588478f595b83e68073aa06182dbac 100644 (file)
@@ -427,8 +427,6 @@ static void __init remove_securityfs_measurement_lists(struct dentry **lists)
 
                kfree(lists);
        }
-
-       securityfs_measurement_list_count = 0;
 }
 
 static int __init create_securityfs_measurement_lists(void)
@@ -625,6 +623,7 @@ out:
        securityfs_remove(binary_runtime_measurements);
        remove_securityfs_measurement_lists(ascii_securityfs_measurement_lists);
        remove_securityfs_measurement_lists(binary_securityfs_measurement_lists);
+       securityfs_measurement_list_count = 0;
        securityfs_remove(ima_symlink);
        securityfs_remove(ima_dir);