mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
IMA: Defined delayed workqueue to free the queued keys
Keys queued for measurement should be freed if a custom IMA policy was not loaded. Otherwise, the keys will remain queued forever consuming kernel memory. This patch defines a delayed workqueue to handle the above scenario. The workqueue handler is setup to execute 5 minutes after IMA initialization is completed. If a custom IMA policy is loaded before the workqueue handler is scheduled to execute, the workqueue task is cancelled and any queued keys are processed for measurement. But if a custom policy was not loaded then the queued keys are just freed when the delayed workqueue handler is run. Signed-off-by: Lakshmi Ramasubramanian <nramas@linux.microsoft.com> Reported-by: kernel test robot <rong.a.chen@intel.com> # sleeping function called from invalid context Reported-by: kbuild test robot <lkp@intel.com> # redefinition of ima_init_key_queue() function. Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
This commit is contained in:
committed by
Mimi Zohar
parent
450d0fd515
commit
5b3014b952
@@ -215,11 +215,13 @@ struct ima_key_entry {
|
||||
size_t payload_len;
|
||||
char *keyring_name;
|
||||
};
|
||||
void ima_init_key_queue(void);
|
||||
bool ima_should_queue_key(void);
|
||||
bool ima_queue_key(struct key *keyring, const void *payload,
|
||||
size_t payload_len);
|
||||
void ima_process_queued_keys(void);
|
||||
#else
|
||||
static inline void ima_init_key_queue(void) {}
|
||||
static inline bool ima_should_queue_key(void) { return false; }
|
||||
static inline bool ima_queue_key(struct key *keyring,
|
||||
const void *payload,
|
||||
|
||||
Reference in New Issue
Block a user