Re: [PATCH v6 10/12] ima: Add support for flushing the hash table when staging measurements
Mimi Zohar <[email protected]> Fri, 05 Jun 2026 11:28:06 -0400
| Newsgroups | org.kernel.vger.linux-integrity,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel,org.kernel.vger.linux-security-module |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 2026-06-02 at 13:13 +0200, Roberto Sassu wrote: > From: Roberto Sassu <[email protected]> > > During staging and delete, measurements are not completely deallocated. > Their entry digest portion is kept and is still reachable with the hash > table to detect duplicate records. If the number of records is significant, > this reduces the memory saving benefit of staging. > > Some users might be interested in achieving the best memory saving (the > measurements are completely deallocated) at the cost of having duplicate > records across the staged measurement lists. Duplicate records are still > avoided within the current measurement list. > > Introduce the new kernel option ima_flush_htable to decide whether or not > the digests of staged measurement records are flushed from the hash table, > when they are deleted, to achieve the maximum memory saving. > > When the option is enabled, replace the old hash table with a new one, > by calling ima_alloc_replace_htable(), and completely delete the > measurements records. > > Note: This code derives from the Alt-IMA Huawei project, whose license is > GPL-2.0 OR MIT. > > Link: https://github.com/linux-integrity/linux/issues/1 > Signed-off-by: Roberto Sassu <[email protected]> > --- > .../admin-guide/kernel-parameters.txt | 6 +++ > security/integrity/ima/ima.h | 1 + > security/integrity/ima/ima_queue.c | 41 ++++++++++++++++--- > 3 files changed, 42 insertions(+), 6 deletions(-) > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index 4d0f545fb3ec..aad318803f82 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -2343,6 +2343,12 @@ Kernel parameters > Use the canonical format for the binary runtime > measurements, instead of host native format. > > + ima_flush_htable [IMA] > + Flush the IMA hash table when deleting all the > + staged measurement records, to achieve maximum > + memory saving at the cost of having duplicate > + records across the staged measurement lists. Thank you for patch description, kernel doc, and Kconfig updates. > + > ima_hash= [IMA] > Format: { md5 | sha1 | rmd160 | sha256 | sha384 > | sha512 | ... } > diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h > index a05db5b18982..d2e740c8ff75 100644 > --- a/security/integrity/ima/ima.h > +++ b/security/integrity/ima/ima.h > @@ -343,6 +343,7 @@ extern atomic_long_t ima_num_records[BINARY__LAST]; > extern atomic_long_t ima_num_violations; > extern struct hlist_head __rcu *ima_htable; > extern struct mutex ima_extend_list_mutex; > +extern bool ima_flush_htable; Making ima_flush_htable global is only needed for "[PATCH v6 11/12] ima: Support staging and deleting N measurements records", not here. Please make it static here and change it to global as needed. Mimi