Re: [PATCH v4 2/2] IMA: Call workqueue functions to measure queued keys

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi James,


This is the problem: in the race case you may still be adding keys to
the queue after the other thread has processed it. Those keys won't get
processed because the flag is now false in the post check so the
current thread won't process them either.

James


Please let me know if you still think there is a race condition.

If yes, please explain how a key would be added to the queue after ima_process_queued_keys() has processed queued keys.
ima_process_keys flag will be true when queued keys have been processed.


Please keep in mind that ima_queue_key() returns a boolean indicating whether or not the key was queued. This flag is set inside the lock - please see the code snippet from ima_queue_key() below:

+    mutex_lock(&ima_keys_mutex);
+    if (!ima_process_keys) {
+        list_add_tail(&entry->list, &ima_keys);
+        queued = true;
+    }
+    mutex_unlock(&ima_keys_mutex);

If ima_process_keys had changed from false to true, ima_queue_key() will not queue the key and return false to ima_post_key_create_or_update().

Code snippet in ima_post_key_create_or_update():

+    if (!ima_process_keys)
+        queued = ima_queue_key(keyring, payload, payload_len);
+
+    if (queued)
+        return;

If the "queued" is false, ima_post_key_create_or_update() will process the key immediately.

  -lakshmi

thanks,
 -lakshmi



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux Kernel Hardening]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux