lkml.org 
[lkml]   [2019]   [Dec]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH v4 2/2] IMA: Call workqueue functions to measure queued keys
Date
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

\
 
 \ /
  Last update: 2019-12-17 23:22    [W:0.069 / U:10.072 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site