diff options
author | Lakshmi Ramasubramanian <nramas@linux.microsoft.com> | 2021-02-04 20:49:51 +0300 |
---|---|---|
committer | Mimi Zohar <zohar@linux.ibm.com> | 2021-02-10 23:49:38 +0300 |
commit | f31e3386a4e92ba6eda7328cb508462956c94c64 (patch) | |
tree | d98da3e377fd2f3cfd48683f66c7e57246f70700 /security/integrity/ima/ima_kexec.c | |
parent | 6d14c6517885fa68524238787420511b87d671df (diff) | |
download | linux-f31e3386a4e92ba6eda7328cb508462956c94c64.tar.xz |
ima: Free IMA measurement buffer after kexec syscall
IMA allocates kernel virtual memory to carry forward the measurement
list, from the current kernel to the next kernel on kexec system call,
in ima_add_kexec_buffer() function. This buffer is not freed before
completing the kexec system call resulting in memory leak.
Add ima_buffer field in "struct kimage" to store the virtual address
of the buffer allocated for the IMA measurement list.
Free the memory allocated for the IMA measurement list in
kimage_file_post_load_cleanup() function.
Signed-off-by: Lakshmi Ramasubramanian <nramas@linux.microsoft.com>
Suggested-by: Tyler Hicks <tyhicks@linux.microsoft.com>
Reviewed-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com>
Fixes: 7b8589cc29e7 ("ima: on soft reboot, save the measurement list")
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
Diffstat (limited to 'security/integrity/ima/ima_kexec.c')
-rw-r--r-- | security/integrity/ima/ima_kexec.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/security/integrity/ima/ima_kexec.c b/security/integrity/ima/ima_kexec.c index 206ddcaa5c67..e29bea3dd4cc 100644 --- a/security/integrity/ima/ima_kexec.c +++ b/security/integrity/ima/ima_kexec.c @@ -129,6 +129,8 @@ void ima_add_kexec_buffer(struct kimage *image) return; } + image->ima_buffer = kexec_buffer; + pr_debug("kexec measurement buffer for the loaded kernel at 0x%lx.\n", kbuf.mem); } |