]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - security/keys/trusted.c
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
[karo-tx-linux.git] / security / keys / trusted.c
index 3f163d0489ad2e8705a8f57c4751038b9d7d6f36..e13fcf7636f7ffa0ff40d7cd60408645621dab1f 100644 (file)
@@ -895,23 +895,24 @@ static struct trusted_key_payload *trusted_payload_alloc(struct key *key)
  *
  * On success, return 0. Otherwise return errno.
  */
-static int trusted_instantiate(struct key *key, const void *data,
-                              size_t datalen)
+static int trusted_instantiate(struct key *key,
+                              struct key_preparsed_payload *prep)
 {
        struct trusted_key_payload *payload = NULL;
        struct trusted_key_options *options = NULL;
+       size_t datalen = prep->datalen;
        char *datablob;
        int ret = 0;
        int key_cmd;
        size_t key_len;
 
-       if (datalen <= 0 || datalen > 32767 || !data)
+       if (datalen <= 0 || datalen > 32767 || !prep->data)
                return -EINVAL;
 
        datablob = kmalloc(datalen + 1, GFP_KERNEL);
        if (!datablob)
                return -ENOMEM;
-       memcpy(datablob, data, datalen);
+       memcpy(datablob, prep->data, datalen);
        datablob[datalen] = '\0';
 
        options = trusted_options_alloc();
@@ -981,17 +982,18 @@ static void trusted_rcu_free(struct rcu_head *rcu)
 /*
  * trusted_update - reseal an existing key with new PCR values
  */
-static int trusted_update(struct key *key, const void *data, size_t datalen)
+static int trusted_update(struct key *key, struct key_preparsed_payload *prep)
 {
        struct trusted_key_payload *p = key->payload.data;
        struct trusted_key_payload *new_p;
        struct trusted_key_options *new_o;
+       size_t datalen = prep->datalen;
        char *datablob;
        int ret = 0;
 
        if (!p->migratable)
                return -EPERM;
-       if (datalen <= 0 || datalen > 32767 || !data)
+       if (datalen <= 0 || datalen > 32767 || !prep->data)
                return -EINVAL;
 
        datablob = kmalloc(datalen + 1, GFP_KERNEL);
@@ -1008,7 +1010,7 @@ static int trusted_update(struct key *key, const void *data, size_t datalen)
                goto out;
        }
 
-       memcpy(datablob, data, datalen);
+       memcpy(datablob, prep->data, datalen);
        datablob[datalen] = '\0';
        ret = datablob_parse(datablob, new_p, new_o);
        if (ret != Opt_update) {