mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	tpm: export tpm2_flush_context_cmd
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Tested-by: James Bottomley <James.Bottomley@HansenPartnership.com> Reviewed-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
		
							parent
							
								
									a147918e79
								
							
						
					
					
						commit
						9aa36b399a
					
				
					 2 changed files with 31 additions and 33 deletions
				
			
		| 
						 | 
				
			
			@ -541,6 +541,8 @@ int tpm2_pcr_read(struct tpm_chip *chip, int pcr_idx, u8 *res_buf);
 | 
			
		|||
int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, u32 count,
 | 
			
		||||
		    struct tpm2_digest *digests);
 | 
			
		||||
int tpm2_get_random(struct tpm_chip *chip, u8 *out, size_t max);
 | 
			
		||||
void tpm2_flush_context_cmd(struct tpm_chip *chip, u32 handle,
 | 
			
		||||
			    unsigned int flags);
 | 
			
		||||
int tpm2_seal_trusted(struct tpm_chip *chip,
 | 
			
		||||
		      struct trusted_key_payload *payload,
 | 
			
		||||
		      struct trusted_key_options *options);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -418,6 +418,35 @@ static const struct tpm_input_header tpm2_get_tpm_pt_header = {
 | 
			
		|||
	.ordinal = cpu_to_be32(TPM2_CC_GET_CAPABILITY)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * tpm2_flush_context_cmd() - execute a TPM2_FlushContext command
 | 
			
		||||
 * @chip: TPM chip to use
 | 
			
		||||
 * @payload: the key data in clear and encrypted form
 | 
			
		||||
 * @options: authentication values and other options
 | 
			
		||||
 *
 | 
			
		||||
 * Return: same as with tpm_transmit_cmd
 | 
			
		||||
 */
 | 
			
		||||
void tpm2_flush_context_cmd(struct tpm_chip *chip, u32 handle,
 | 
			
		||||
			    unsigned int flags)
 | 
			
		||||
{
 | 
			
		||||
	struct tpm_buf buf;
 | 
			
		||||
	int rc;
 | 
			
		||||
 | 
			
		||||
	rc = tpm_buf_init(&buf, TPM2_ST_NO_SESSIONS, TPM2_CC_FLUSH_CONTEXT);
 | 
			
		||||
	if (rc) {
 | 
			
		||||
		dev_warn(&chip->dev, "0x%08x was not flushed, out of memory\n",
 | 
			
		||||
			 handle);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tpm_buf_append_u32(&buf, handle);
 | 
			
		||||
 | 
			
		||||
	(void) tpm_transmit_cmd(chip, buf.data, PAGE_SIZE, 0, flags,
 | 
			
		||||
				"flushing context");
 | 
			
		||||
 | 
			
		||||
	tpm_buf_destroy(&buf);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * tpm_buf_append_auth() - append TPMS_AUTH_COMMAND to the buffer.
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -627,39 +656,6 @@ static int tpm2_load_cmd(struct tpm_chip *chip,
 | 
			
		|||
	return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * tpm2_flush_context_cmd() - execute a TPM2_FlushContext command
 | 
			
		||||
 *
 | 
			
		||||
 * @chip: TPM chip to use
 | 
			
		||||
 * @handle: the key data in clear and encrypted form
 | 
			
		||||
 * @flags: tpm transmit flags
 | 
			
		||||
 *
 | 
			
		||||
 * Return: Same as with tpm_transmit_cmd.
 | 
			
		||||
 */
 | 
			
		||||
static void tpm2_flush_context_cmd(struct tpm_chip *chip, u32 handle,
 | 
			
		||||
				   unsigned int flags)
 | 
			
		||||
{
 | 
			
		||||
	struct tpm_buf buf;
 | 
			
		||||
	int rc;
 | 
			
		||||
 | 
			
		||||
	rc = tpm_buf_init(&buf, TPM2_ST_NO_SESSIONS, TPM2_CC_FLUSH_CONTEXT);
 | 
			
		||||
	if (rc) {
 | 
			
		||||
		dev_warn(&chip->dev, "0x%08x was not flushed, out of memory\n",
 | 
			
		||||
			 handle);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tpm_buf_append_u32(&buf, handle);
 | 
			
		||||
 | 
			
		||||
	rc = tpm_transmit_cmd(chip, buf.data, PAGE_SIZE, 0, flags,
 | 
			
		||||
			      "flushing context");
 | 
			
		||||
	if (rc)
 | 
			
		||||
		dev_warn(&chip->dev, "0x%08x was not flushed, rc=%d\n", handle,
 | 
			
		||||
			 rc);
 | 
			
		||||
 | 
			
		||||
	tpm_buf_destroy(&buf);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * tpm2_unseal_cmd() - execute a TPM2_Unload command
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue