Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc7c70e0 authored by David Howells's avatar David Howells
Browse files

KEYS: struct key_preparsed_payload should have two payload pointers



struct key_preparsed_payload should have two payload pointers to correspond
with those in struct key.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Acked-by: default avatarSteve Dickson <steved@redhat.com>
Acked-by: default avatarJeff Layton <jlayton@primarydata.com>
Reviewed-by: default avatarSage Weil <sage@redhat.com>
parent 6a09d17b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@ static void asymmetric_key_free_preparse(struct key_preparsed_payload *prep)
	pr_devel("==>%s()\n", __func__);

	if (subtype) {
		subtype->destroy(prep->payload);
		subtype->destroy(prep->payload[0]);
		module_put(subtype->owner);
	}
	kfree(prep->type_data[1]);
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ static int x509_key_preparse(struct key_preparsed_payload *prep)
	__module_get(public_key_subtype.owner);
	prep->type_data[0] = &public_key_subtype;
	prep->type_data[1] = cert->fingerprint;
	prep->payload = cert->pub;
	prep->payload[0] = cert->pub;
	prep->description = desc;
	prep->quotalen = 100;

+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ struct key_construction {
struct key_preparsed_payload {
	char		*description;	/* Proposed key description (or NULL) */
	void		*type_data[2];	/* Private key-type data */
	void		*payload;	/* Proposed payload */
	void		*payload[2];	/* Proposed payload */
	const void	*data;		/* Raw data */
	size_t		datalen;	/* Raw datalen */
	size_t		quotalen;	/* Quota length for proposed payload */
+1 −1
Original line number Diff line number Diff line
@@ -811,7 +811,7 @@ static int encrypted_instantiate(struct key *key,
		goto out;
	}

	rcu_assign_keypointer(key, epayload);
	prep->payload[0] = epayload;
out:
	kfree(datablob);
	return ret;
+4 −2
Original line number Diff line number Diff line
@@ -1043,10 +1043,12 @@ int generic_key_instantiate(struct key *key, struct key_preparsed_payload *prep)
	if (ret == 0) {
		key->type_data.p[0] = prep->type_data[0];
		key->type_data.p[1] = prep->type_data[1];
		rcu_assign_keypointer(key, prep->payload);
		rcu_assign_keypointer(key, prep->payload[0]);
		key->payload.data2[1] = prep->payload[1];
		prep->type_data[0] = NULL;
		prep->type_data[1] = NULL;
		prep->payload = NULL;
		prep->payload[0] = NULL;
		prep->payload[1] = NULL;
	}
	pr_devel("<==%s() = %d\n", __func__, ret);
	return ret;