FAILED: patch "[PATCH] ima: limit the number of ToMToU 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 a414016218ca97140171aa3bb926b02e1f68c2cc
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025041739-props-huff-8deb@gregkh' --subject-prefix 'PATCH 6.6.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From a414016218ca97140171aa3bb926b02e1f68c2cc Mon Sep 17 00:00:00 2001
From: Mimi Zohar <[email protected]>
Date: Mon, 27 Jan 2025 10:45:48 -0500
Subject: [PATCH] ima: limit the number of ToMToU integrity violations
Each time a file in policy, that is already opened for read, is opened for write, a Time-of-Measure-Time-of-Use (ToMToU) integrity violation audit message is emitted and a violation record is added to the IMA measurement list. This occurs even if a ToMToU violation has already been recorded.
Limit the number of ToMToU integrity violations per file open for read.
Note: The IMA_MAY_EMIT_TOMTOU atomic flag must be set from the reader side based on policy. This may result in a per file open for read ToMToU violation.
Since IMA_MUST_MEASURE is only used for violations, rename the atomic IMA_MUST_MEASURE flag to IMA_MAY_EMIT_TOMTOU.
security/integrity/ima/ima.h +1 -1
@@ -181,7 +181,7 @@ struct ima_kexec_hdr {#define IMA_UPDATE_XATTR 1#define IMA_CHANGE_ATTR 2#define IMA_DIGSIG 3 -#define IMA_MUST_MEASURE 4 +#define IMA_MAY_EMIT_TOMTOU 4#define IMA_EMITTED_OPENWRITERS 5/* IMA integrity metadata associated with an inode */
security/integrity/ima/ima_main.c +4 -3
@@ -129,14 +129,15 @@ static void ima_rdwr_violation_check(struct file *file,if (atomic_read (&inode->i_readcount) &&IS_IMA (inode)) {if (!iint) iint =ima_iint_find (inode); +/* IMA_MEASURE is set from reader side */ -if (iint &&test_bit (IMA_MUST_MEASURE , - &iint->atomic_flags)) +if (iint &&test_and_clear_bit (IMA_MAY_EMIT_TOMTOU , + &iint->atomic_flags)) send_tomtou = true; } }else {if (must_measure) -set_bit (IMA_MUST_MEASURE , &iint->atomic_flags); +set_bit (IMA_MAY_EMIT_TOMTOU , &iint->atomic_flags);/* Limit number of open_writers violations */ if (inode_is_open_for_write (inode) && must_measure) {
Sasha Levin
maintainerPATCH 1/1 ima: limit the number of ToMToU integrity violations
From: Mimi Zohar <[email protected]>
[ Upstream commit a414016218ca97140171aa3bb926b02e1f68c2cc ]
Each time a file in policy, that is already opened for read, is opened for write, a Time-of-Measure-Time-of-Use (ToMToU) integrity violation audit message is emitted and a violation record is added to the IMA measurement list. This occurs even if a ToMToU violation has already been recorded.
Limit the number of ToMToU integrity violations per file open for read.
Note: The IMA_MAY_EMIT_TOMTOU atomic flag must be set from the reader side based on policy. This may result in a per file open for read ToMToU violation.
Since IMA_MUST_MEASURE is only used for violations, rename the atomic IMA_MUST_MEASURE flag to IMA_MAY_EMIT_TOMTOU.
--- security/integrity/ima/ima_main.c | 16 +++++++++++----- security/integrity/integrity.h | 3 ++- 2 files changed, 13 insertions(+), 6 deletions(-)
security/integrity/ima/ima_main.c +11 -5
@@ -128,16 +128,22 @@ static void ima_rdwr_violation_check(struct file *file,if (atomic_read (&inode->i_readcount) &&IS_IMA (inode)) {if (!iint) iint =integrity_iint_find (inode); +/* IMA_MEASURE is set from reader side */ -if (iint &&test_bit (IMA_MUST_MEASURE , - &iint->atomic_flags)) +if (iint &&test_and_clear_bit (IMA_MAY_EMIT_TOMTOU , + &iint->atomic_flags)) send_tomtou = true; } }else {if (must_measure) -set_bit (IMA_MUST_MEASURE , &iint->atomic_flags); -if (inode_is_open_for_write (inode) && must_measure) - send_writers = true; +set_bit (IMA_MAY_EMIT_TOMTOU , &iint->atomic_flags); + +/* 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)
security/integrity/integrity.h +2 -1
@@ -74,7 +74,8 @@#define IMA_UPDATE_XATTR 1#define IMA_CHANGE_ATTR 2#define IMA_DIGSIG 3 -#define IMA_MUST_MEASURE 4 +#define IMA_MAY_EMIT_TOMTOU 4 +#define IMA_EMITTED_OPENWRITERS 5enum evm_ima_xattr_type {IMA_XATTR_DIGEST =0x01 ,
Signature · 1 line
2.51.0