linux/security/integrity/ima
Roberto Sassu 5b6eac63d1 ima: Reset IMA_NONACTION_RULE_FLAGS after post_setattr
commit 57a0ef02fe upstream.

Commit 0d73a55208 ("ima: re-introduce own integrity cache lock")
mistakenly reverted the performance improvement introduced in commit
42a4c60319 ("ima: fix ima_inode_post_setattr"). The unused bit mask was
subsequently removed by commit 11c60f23ed ("integrity: Remove unused
macro IMA_ACTION_RULE_FLAGS").

Restore the performance improvement by introducing the new mask
IMA_NONACTION_RULE_FLAGS, equal to IMA_NONACTION_FLAGS without
IMA_NEW_FILE, which is not a rule-specific flag.

Finally, reset IMA_NONACTION_RULE_FLAGS instead of IMA_NONACTION_FLAGS in
process_measurement(), if the IMA_CHANGE_ATTR atomic flag is set (after
file metadata modification).

With this patch, new files for which metadata were modified while they are
still open, can be reopened before the last file close (when security.ima
is written), since the IMA_NEW_FILE flag is not cleared anymore. Otherwise,
appraisal fails because security.ima is missing (files with IMA_NEW_FILE
set are an exception).

Cc: stable@vger.kernel.org # v4.16.x
Fixes: 0d73a55208 ("ima: re-introduce own integrity cache lock")
Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-03-13 12:58:40 +01:00
..
ima.h ima: Avoid blocking in RCU read-side critical section 2024-07-11 12:49:18 +02:00
ima_api.c ima: Fix use-after-free on a dentry's dname.name 2024-06-21 14:38:48 +02:00
ima_appraise.c integrity: Always reference the blacklist keyring with appraisal 2023-08-01 08:17:25 -04:00
ima_asymmetric_keys.c fs: port xattr to mnt_idmap 2023-01-19 09:24:28 +01:00
ima_crypto.c mm, treewide: redefine MAX_ORDER sanely 2023-04-05 19:42:46 -07:00
ima_efi.c ima: require signed IMA policy when UEFI secure boot is enabled 2023-08-01 08:18:11 -04:00
ima_fs.c ima: Return error code obtained from securityfs functions 2022-02-15 11:17:01 -05:00
ima_init.c ima: define ima_max_digest_data struct without a flexible array variable 2022-02-15 11:52:06 -05:00
ima_kexec.c kexec_lock: Replace kexec_mutex() by kexec_lock() in two comments 2023-08-07 09:55:42 -04:00
ima_main.c ima: Reset IMA_NONACTION_RULE_FLAGS after post_setattr 2025-03-13 12:58:40 +01:00
ima_modsig.c ima: Fix build warnings 2023-06-06 09:37:23 -04:00
ima_mok.c IMA: remove -Wmissing-prototypes warning 2021-07-23 08:05:06 -04:00
ima_policy.c ima: Avoid blocking in RCU read-side critical section 2024-07-11 12:49:18 +02:00
ima_queue.c IMA: support for duplicate measurement records 2021-06-11 12:54:13 -04:00
ima_queue_keys.c fs: port xattr to mnt_idmap 2023-01-19 09:24:28 +01:00
ima_template.c ima: Fix misuse of dereference of pointer in template_desc_init_fields() 2022-11-16 11:47:55 -05:00
ima_template_lib.c ima: fix buffer overrun in ima_eventdigest_init_common 2024-11-22 15:38:34 +01:00
ima_template_lib.h ima: define a new template field named 'd-ngv2' and templates 2022-05-05 11:49:13 -04:00
Kconfig ima: rework CONFIG_IMA dependency block 2023-09-27 11:52:12 -04:00
Makefile ima: generalize x86/EFI arch glue for other EFI architectures 2020-11-06 07:40:42 +01:00