]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - crypto/asymmetric_keys/asymmetric_type.c
Merge remote-tracking branch 'trivial/for-next'
[karo-tx-linux.git] / crypto / asymmetric_keys / asymmetric_type.c
index 1916680ad81b08fc6db5a0f9f2751dc0526b3e9b..9f2165b27d52efe6fcae3c64956a2c717a3d93da 100644 (file)
@@ -306,26 +306,35 @@ static int asymmetric_key_preparse(struct key_preparsed_payload *prep)
        return ret;
 }
 
+/*
+ * Clean up the key ID list
+ */
+static void asymmetric_key_free_kids(struct asymmetric_key_ids *kids)
+{
+       int i;
+
+       if (kids) {
+               for (i = 0; i < ARRAY_SIZE(kids->id); i++)
+                       kfree(kids->id[i]);
+               kfree(kids);
+       }
+}
+
 /*
  * Clean up the preparse data
  */
 static void asymmetric_key_free_preparse(struct key_preparsed_payload *prep)
 {
-       struct asymmetric_key_subtype *subtype = prep->type_data[0];
-       struct asymmetric_key_ids *kids = prep->type_data[1];
-       int i;
+       struct asymmetric_key_subtype *subtype = prep->payload.data[asym_subtype];
+       struct asymmetric_key_ids *kids = prep->payload.data[asym_key_ids];
 
        pr_devel("==>%s()\n", __func__);
 
        if (subtype) {
-               subtype->destroy(prep->payload[0]);
+               subtype->destroy(prep->payload.data[asym_crypto]);
                module_put(subtype->owner);
        }
-       if (kids) {
-               for (i = 0; i < ARRAY_SIZE(kids->id); i++)
-                       kfree(kids->id[i]);
-               kfree(kids);
-       }
+       asymmetric_key_free_kids(kids);
        kfree(prep->description);
 }
 
@@ -335,20 +344,19 @@ static void asymmetric_key_free_preparse(struct key_preparsed_payload *prep)
 static void asymmetric_key_destroy(struct key *key)
 {
        struct asymmetric_key_subtype *subtype = asymmetric_key_subtype(key);
-       struct asymmetric_key_ids *kids = key->type_data.p[1];
+       struct asymmetric_key_ids *kids = key->payload.data[asym_key_ids];
+       void *data = key->payload.data[asym_crypto];
+
+       key->payload.data[asym_crypto] = NULL;
+       key->payload.data[asym_subtype] = NULL;
+       key->payload.data[asym_key_ids] = NULL;
 
        if (subtype) {
-               subtype->destroy(key->payload.data);
+               subtype->destroy(data);
                module_put(subtype->owner);
-               key->type_data.p[0] = NULL;
        }
 
-       if (kids) {
-               kfree(kids->id[0]);
-               kfree(kids->id[1]);
-               kfree(kids);
-               key->type_data.p[1] = NULL;
-       }
+       asymmetric_key_free_kids(kids);
 }
 
 struct key_type key_type_asymmetric = {