FAILED: patch "[PATCH] ima: limit the number of open-writers integrity violations" failed to apply to 6.6-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 6.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.6.y
git checkout FETCH_HEAD
git cherry-pick -x 5b3cd801155f0b34b0b95942a5b057c9b8cad33e
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025041724-puritan-pointer-517f@gregkh' --subject-prefix 'PATCH 6.6.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 5b3cd801155f0b34b0b95942a5b057c9b8cad33e Mon Sep 17 00:00:00 2001
From: Mimi Zohar <[email protected]>
Date: Mon, 27 Jan 2025 10:24:13 -0500
Subject: [PATCH] ima: limit the number of open-writers integrity violations
Each time a file in policy, that is already opened for write, is opened for read, an open-writers integrity violation audit message is emitted and a violation record is added to the IMA measurement list. This occurs even if an open-writers violation has already been recorded.
Limit the number of open-writers integrity violations for an existing file open for write to one. After the existing file open for write closes (__fput), subsequent open-writers integrity violations may be emitted.
security/integrity/ima/ima.h +1 -0
@@ -182,6 +182,7 @@ struct ima_kexec_hdr {#define IMA_CHANGE_ATTR 2#define IMA_DIGSIG 3#define IMA_MUST_MEASURE 4 +#define IMA_EMITTED_OPENWRITERS 5/* IMA integrity metadata associated with an inode */ struct ima_iint_cache {
security/integrity/ima/ima_main.c +9 -2
@@ -137,8 +137,13 @@ static void ima_rdwr_violation_check(struct file *file, }else {if (must_measure)set_bit (IMA_MUST_MEASURE , &iint->atomic_flags); -if (inode_is_open_for_write (inode) && must_measure) - send_writers = true; + +/* Limit number of open_writers violations */ +if (inode_is_open_for_write (inode) && must_measure) { +if (!test_and_set_bit (IMA_EMITTED_OPENWRITERS , + &iint->atomic_flags)) + send_writers = true; + } }if (!send_tomtou && !send_writers)
@@ -167,6 +172,8 @@ static void ima_check_last_writer(struct ima_iint_cache *iint,if (atomic_read (&inode->i_writecount) ==1 ) {struct kstat stat; +clear_bit (IMA_EMITTED_OPENWRITERS , &iint->atomic_flags); + update =test_and_clear_bit (IMA_UPDATE_XATTR , &iint->atomic_flags); if ((iint->flags & IMA_NEW_FILE) ||