Message ID | 20241104-ima_rcu-v1-1-5157460c5907@debian.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | ima: kexec: Add RCU read lock protection for ima_measurements list traversal | expand |
diff --git a/security/integrity/ima/ima_kexec.c b/security/integrity/ima/ima_kexec.c index 52e00332defed39774c9e23e045f1377cfa30d0c..3b17ddb91d35ac806aedd2ee970ff365675dac0b 100644 --- a/security/integrity/ima/ima_kexec.c +++ b/security/integrity/ima/ima_kexec.c @@ -37,6 +37,7 @@ static int ima_dump_measurement_list(unsigned long *buffer_size, void **buffer, memset(&khdr, 0, sizeof(khdr)); khdr.version = 1; + rcu_read_lock(); list_for_each_entry_rcu(qe, &ima_measurements, later) { if (file.count < file.size) { khdr.count++; @@ -46,6 +47,7 @@ static int ima_dump_measurement_list(unsigned long *buffer_size, void **buffer, break; } } + rcu_read_unlock(); if (ret < 0) goto out;
Fix a potential RCU issue where ima_measurements list is traversed using list_for_each_entry_rcu() without proper RCU read lock protection. This caused warnings when CONFIG_PROVE_RCU was enabled: security/integrity/ima/ima_kexec.c:40 RCU-list traversed in non-reader section!! Add rcu_read_lock() before iterating over ima_measurements list to ensure proper RCU synchronization, consistent with other RCU list traversals in the codebase. Signed-off-by: Breno Leitao <leitao@debian.org> Fixes: 7b8589cc29e7 ("ima: on soft reboot, save the measurement list") --- security/integrity/ima/ima_kexec.c | 2 ++ 1 file changed, 2 insertions(+) --- base-commit: f488649e40f8900d23b86afeab7d4b78c063d5d1 change-id: 20241104-ima_rcu-ee83da87d050 Best regards,