History

security: fix the key_permission LSM hook function type

Commit 8c0637e950d6 ("keys: Make the KEY_NEED_* perms an enum rather than a mask") changed the type of the key_permission callback functions, but didn't change the type of the hook, which trips indirect call checking with Control-Flow Integrity (CFI). This change fixes the issue by changing the hook type to match the functions.

Sami Tolvanen committed 6 years ago

Commit 4bc799d1 parent 48778461 file · +1 −1Browse files

Showing the changes to include/linux (1 of 1 file). Show all

Unified · Split

include/linux/lsm_hook_defs.h+1−1
@@ -360,7 +360,7 @@ LSM_HOOK(int, 0, key_alloc, struct key *key, const struct cred *cred, · 359 unmodified lines
360360 unsigned long flags)
361361 LSM_HOOK(void, LSM_RET_VOID, key_free, struct key *key)
362362 LSM_HOOK(int, 0, key_permission, key_ref_t key_ref, const struct cred *cred,
363− unsigned perm)
363+ enum key_need_perm need_perm)
364364 LSM_HOOK(int, 0, key_getsecurity, struct key *key, char **_buffer)
365365 #endif /* CONFIG_KEYS */
366366