[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250402124725.5601-8-chenste@linux.microsoft.com>
Date: Wed, 2 Apr 2025 05:47:20 -0700
From: steven chen <chenste@...ux.microsoft.com>
To: zohar@...ux.ibm.com,
stefanb@...ux.ibm.com,
roberto.sassu@...weicloud.com,
roberto.sassu@...wei.com,
eric.snowberg@...cle.com,
ebiederm@...ssion.com,
paul@...l-moore.com,
code@...icks.com,
bauermann@...abnow.com,
linux-integrity@...r.kernel.org,
kexec@...ts.infradead.org,
linux-security-module@...r.kernel.org,
linux-kernel@...r.kernel.org
Cc: madvenka@...ux.microsoft.com,
nramas@...ux.microsoft.com,
James.Bottomley@...senPartnership.com,
bhe@...hat.com,
vgoyal@...hat.com,
dyoung@...hat.com
Subject: [PATCH v11 7/9] ima: verify if the segment size has changed
kexec 'load' may be called multiple times. Free and realloc the buffer
only if the segment_size is changed from the previous kexec 'load' call.
Signed-off-by: steven chen <chenste@...ux.microsoft.com>
---
security/integrity/ima/ima_kexec.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/security/integrity/ima/ima_kexec.c b/security/integrity/ima/ima_kexec.c
index 5c3b3e0b2186..ed867734ee70 100644
--- a/security/integrity/ima/ima_kexec.c
+++ b/security/integrity/ima/ima_kexec.c
@@ -33,6 +33,14 @@ static void ima_free_kexec_file_buf(struct seq_file *sf)
static int ima_alloc_kexec_file_buf(size_t segment_size)
{
+ /*
+ * kexec 'load' may be called multiple times.
+ * Free and realloc the buffer only if the segment_size is
+ * changed from the previous kexec 'load' call.
+ */
+ if (ima_kexec_file.buf && ima_kexec_file.size == segment_size)
+ goto out;
+
ima_free_kexec_file_buf(&ima_kexec_file);
/* segment size can't change between kexec load and execute */
@@ -41,6 +49,8 @@ static int ima_alloc_kexec_file_buf(size_t segment_size)
return -ENOMEM;
ima_kexec_file.size = segment_size;
+
+out:
ima_kexec_file.read_pos = 0;
ima_kexec_file.count = sizeof(struct ima_kexec_hdr); /* reserved space */
--
2.25.1
Powered by blists - more mailing lists