diff options
Diffstat (limited to 'security/keys/trusted-keys')
| -rw-r--r-- | security/keys/trusted-keys/trusted_tpm1.c | 14 | 
1 files changed, 2 insertions, 12 deletions
| diff --git a/security/keys/trusted-keys/trusted_tpm1.c b/security/keys/trusted-keys/trusted_tpm1.c index d2c5ec1e040b..8001ab07e63b 100644 --- a/security/keys/trusted-keys/trusted_tpm1.c +++ b/security/keys/trusted-keys/trusted_tpm1.c @@ -1130,11 +1130,10 @@ out:   * trusted_read - copy the sealed blob data to userspace in hex.   * On success, return to userspace the trusted key datablob size.   */ -static long trusted_read(const struct key *key, char __user *buffer, +static long trusted_read(const struct key *key, char *buffer,  			 size_t buflen)  {  	const struct trusted_key_payload *p; -	char *ascii_buf;  	char *bufp;  	int i; @@ -1143,18 +1142,9 @@ static long trusted_read(const struct key *key, char __user *buffer,  		return -EINVAL;  	if (buffer && buflen >= 2 * p->blob_len) { -		ascii_buf = kmalloc_array(2, p->blob_len, GFP_KERNEL); -		if (!ascii_buf) -			return -ENOMEM; - -		bufp = ascii_buf; +		bufp = buffer;  		for (i = 0; i < p->blob_len; i++)  			bufp = hex_byte_pack(bufp, p->blob[i]); -		if (copy_to_user(buffer, ascii_buf, 2 * p->blob_len) != 0) { -			kzfree(ascii_buf); -			return -EFAULT; -		} -		kzfree(ascii_buf);  	}  	return 2 * p->blob_len;  } |