Skip to content

Commit 22260a9

Browse files
author
Al Viro
committed
ima_fs: don't bother with removal of files in directory we'll be removing
removal of parent takes all children out Acked-by: Mimi Zohar <zohar@linux.ibm.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
1 parent a98ce02 commit 22260a9

1 file changed

Lines changed: 18 additions & 39 deletions

File tree

security/integrity/ima/ima_fs.c

Lines changed: 18 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -396,11 +396,6 @@ static ssize_t ima_write_policy(struct file *file, const char __user *buf,
396396

397397
static struct dentry *ima_dir;
398398
static struct dentry *ima_symlink;
399-
static struct dentry *binary_runtime_measurements;
400-
static struct dentry *ascii_runtime_measurements;
401-
static struct dentry *runtime_measurements_count;
402-
static struct dentry *violations;
403-
static struct dentry *ima_policy;
404399

405400
enum ima_fs_flags {
406401
IMA_FS_BUSY,
@@ -419,14 +414,7 @@ static const struct seq_operations ima_policy_seqops = {
419414

420415
static void __init remove_securityfs_measurement_lists(struct dentry **lists)
421416
{
422-
int i;
423-
424-
if (lists) {
425-
for (i = 0; i < securityfs_measurement_list_count; i++)
426-
securityfs_remove(lists[i]);
427-
428-
kfree(lists);
429-
}
417+
kfree(lists);
430418
}
431419

432420
static int __init create_securityfs_measurement_lists(void)
@@ -533,8 +521,7 @@ static int ima_release_policy(struct inode *inode, struct file *file)
533521

534522
ima_update_policy();
535523
#if !defined(CONFIG_IMA_WRITE_POLICY) && !defined(CONFIG_IMA_READ_POLICY)
536-
securityfs_remove(ima_policy);
537-
ima_policy = NULL;
524+
securityfs_remove(file->f_path.dentry);
538525
#elif defined(CONFIG_IMA_WRITE_POLICY)
539526
clear_bit(IMA_FS_BUSY, &ima_fs_flags);
540527
#elif defined(CONFIG_IMA_READ_POLICY)
@@ -553,6 +540,7 @@ static const struct file_operations ima_measure_policy_ops = {
553540

554541
int __init ima_fs_init(void)
555542
{
543+
struct dentry *dentry;
556544
int ret;
557545

558546
ascii_securityfs_measurement_lists = NULL;
@@ -573,54 +561,45 @@ int __init ima_fs_init(void)
573561
if (ret != 0)
574562
goto out;
575563

576-
binary_runtime_measurements =
577-
securityfs_create_symlink("binary_runtime_measurements", ima_dir,
564+
dentry = securityfs_create_symlink("binary_runtime_measurements", ima_dir,
578565
"binary_runtime_measurements_sha1", NULL);
579-
if (IS_ERR(binary_runtime_measurements)) {
580-
ret = PTR_ERR(binary_runtime_measurements);
566+
if (IS_ERR(dentry)) {
567+
ret = PTR_ERR(dentry);
581568
goto out;
582569
}
583570

584-
ascii_runtime_measurements =
585-
securityfs_create_symlink("ascii_runtime_measurements", ima_dir,
571+
dentry = securityfs_create_symlink("ascii_runtime_measurements", ima_dir,
586572
"ascii_runtime_measurements_sha1", NULL);
587-
if (IS_ERR(ascii_runtime_measurements)) {
588-
ret = PTR_ERR(ascii_runtime_measurements);
573+
if (IS_ERR(dentry)) {
574+
ret = PTR_ERR(dentry);
589575
goto out;
590576
}
591577

592-
runtime_measurements_count =
593-
securityfs_create_file("runtime_measurements_count",
578+
dentry = securityfs_create_file("runtime_measurements_count",
594579
S_IRUSR | S_IRGRP, ima_dir, NULL,
595580
&ima_measurements_count_ops);
596-
if (IS_ERR(runtime_measurements_count)) {
597-
ret = PTR_ERR(runtime_measurements_count);
581+
if (IS_ERR(dentry)) {
582+
ret = PTR_ERR(dentry);
598583
goto out;
599584
}
600585

601-
violations =
602-
securityfs_create_file("violations", S_IRUSR | S_IRGRP,
586+
dentry = securityfs_create_file("violations", S_IRUSR | S_IRGRP,
603587
ima_dir, NULL, &ima_htable_violations_ops);
604-
if (IS_ERR(violations)) {
605-
ret = PTR_ERR(violations);
588+
if (IS_ERR(dentry)) {
589+
ret = PTR_ERR(dentry);
606590
goto out;
607591
}
608592

609-
ima_policy = securityfs_create_file("policy", POLICY_FILE_FLAGS,
593+
dentry = securityfs_create_file("policy", POLICY_FILE_FLAGS,
610594
ima_dir, NULL,
611595
&ima_measure_policy_ops);
612-
if (IS_ERR(ima_policy)) {
613-
ret = PTR_ERR(ima_policy);
596+
if (IS_ERR(dentry)) {
597+
ret = PTR_ERR(dentry);
614598
goto out;
615599
}
616600

617601
return 0;
618602
out:
619-
securityfs_remove(ima_policy);
620-
securityfs_remove(violations);
621-
securityfs_remove(runtime_measurements_count);
622-
securityfs_remove(ascii_runtime_measurements);
623-
securityfs_remove(binary_runtime_measurements);
624603
remove_securityfs_measurement_lists(ascii_securityfs_measurement_lists);
625604
remove_securityfs_measurement_lists(binary_securityfs_measurement_lists);
626605
securityfs_measurement_list_count = 0;

0 commit comments

Comments
 (0)