ima: Free IMA measurement buffer after kexec syscall
authorLakshmi Ramasubramanian <nramas@linux.microsoft.com>
Thu, 4 Feb 2021 17:49:51 +0000 (09:49 -0800)
committerMimi Zohar <zohar@linux.ibm.com>
Wed, 10 Feb 2021 20:49:38 +0000 (15:49 -0500)
commitf31e3386a4e92ba6eda7328cb508462956c94c64
treed98da3e377fd2f3cfd48683f66c7e57246f70700
parent6d14c6517885fa68524238787420511b87d671df
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>
include/linux/kexec.h
kernel/kexec_file.c
security/integrity/ima/ima_kexec.c