forked from mirrors/linux
		
	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: David Howells <dhowells@redhat.com> Acked-by: Steve Dickson <steved@redhat.com> Acked-by: Jeff Layton <jlayton@primarydata.com> Reviewed-by: Sage Weil <sage@redhat.com>
This commit is contained in:
		
							parent
							
								
									6a09d17bb6
								
							
						
					
					
						commit
						fc7c70e0b6
					
				
					 5 changed files with 8 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -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]);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue