diff options
author | Mat Martineau | 2016-08-30 20:33:13 +0200 |
---|---|---|
committer | Mat Martineau | 2017-04-03 19:24:56 +0200 |
commit | aaf66c883813f0078e3dafe7d20d1461321ac14f (patch) | |
tree | 5198162cc55309f8653a0a333c2cbdffc64debad /security/keys/keyring.c | |
parent | KEYS: Use a typedef for restrict_link function pointers (diff) | |
download | kernel-qcow2-linux-aaf66c883813f0078e3dafe7d20d1461321ac14f.tar.gz kernel-qcow2-linux-aaf66c883813f0078e3dafe7d20d1461321ac14f.tar.xz kernel-qcow2-linux-aaf66c883813f0078e3dafe7d20d1461321ac14f.zip |
KEYS: Split role of the keyring pointer for keyring restrict functions
The first argument to the restrict_link_func_t functions was a keyring
pointer. These functions are called by the key subsystem with this
argument set to the destination keyring, but restrict_link_by_signature
expects a pointer to the relevant trusted keyring.
Restrict functions may need something other than a single struct key
pointer to allow or reject key linkage, so the data used to make that
decision (such as the trust keyring) is moved to a new, fourth
argument. The first argument is now always the destination keyring.
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Diffstat (limited to 'security/keys/keyring.c')
-rw-r--r-- | security/keys/keyring.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/security/keys/keyring.c b/security/keys/keyring.c index 1b29ac759bf7..2ccc66ec35d7 100644 --- a/security/keys/keyring.c +++ b/security/keys/keyring.c @@ -517,6 +517,7 @@ EXPORT_SYMBOL(keyring_alloc); * @keyring: The keyring being added to. * @type: The type of key being added. * @payload: The payload of the key intended to be added. + * @data: Additional data for evaluating restriction. * * Reject the addition of any links to a keyring. It can be overridden by * passing KEY_ALLOC_BYPASS_RESTRICTION to key_instantiate_and_link() when @@ -527,7 +528,8 @@ EXPORT_SYMBOL(keyring_alloc); */ int restrict_link_reject(struct key *keyring, const struct key_type *type, - const union key_payload *payload) + const union key_payload *payload, + struct key *restriction_key) { return -EPERM; } @@ -1220,7 +1222,7 @@ static int __key_link_check_restriction(struct key *keyring, struct key *key) { if (!keyring->restrict_link) return 0; - return keyring->restrict_link(keyring, key->type, &key->payload); + return keyring->restrict_link(keyring, key->type, &key->payload, NULL); } /** |