Re: [PATCH v1.5 3/5] key: add tpm_send command

From: Serge Hallyn
Date: Tue Nov 23 2010 - 21:32:55 EST


Quoting Mimi Zohar (zohar@xxxxxxxxxxxxxxxxxx):
> Add internal kernel tpm_send() command used to seal/unseal keys.
>
> Changelog:
> - replaced module_put in tpm_send() with new tpm_chip_put() wrapper
> (suggested by David Howells)
> - Make tpm_send() cmd argument a 'void *' (suggested by David Howells)
>
> Signed-off-by: David Safford <safford@xxxxxxxxxxxxxx>
> Signed-off-by: Mimi Zohar <zohar@xxxxxxxxxx>
> Acked-by: David Howells <dhowells@xxxxxxxxxx>
> ---
> drivers/char/tpm/tpm.c | 16 ++++++++++++++++
> include/linux/tpm.h | 4 ++++
> 2 files changed, 20 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
> index 26c09f3..068bac8 100644
> --- a/drivers/char/tpm/tpm.c
> +++ b/drivers/char/tpm/tpm.c
> @@ -780,6 +780,22 @@ int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash)
> }
> EXPORT_SYMBOL_GPL(tpm_pcr_extend);
>
> +int tpm_send(u32 chip_num, void *cmd, size_t buflen)

Hate to nit-pick, but any particular reason you're not following the
rest of the file and using 'struct tpm_cmd_t *cmd' here?

Acked-by: Serge E. Hallyn <serge.hallyn@xxxxxxxxxxxxx>

> +{
> + struct tpm_chip *chip;
> + int rc;
> +
> + chip = tpm_chip_find_get(chip_num);
> + if (chip == NULL)
> + return -ENODEV;
> +
> + rc = transmit_cmd(chip, cmd, buflen, "attempting tpm_cmd");
> +
> + tpm_chip_put(chip);
> + return rc;
> +}
> +EXPORT_SYMBOL_GPL(tpm_send);
> +
> ssize_t tpm_show_pcrs(struct device *dev, struct device_attribute *attr,
> char *buf)
> {
> diff --git a/include/linux/tpm.h b/include/linux/tpm.h
> index ac5d1c1..fdc718a 100644
> --- a/include/linux/tpm.h
> +++ b/include/linux/tpm.h
> @@ -31,6 +31,7 @@
>
> extern int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf);
> extern int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash);
> +extern int tpm_send(u32 chip_num, void *cmd, size_t buflen);
> #else
> static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) {
> return -ENODEV;
> @@ -38,5 +39,8 @@ static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) {
> static inline int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash) {
> return -ENODEV;
> }
> +static inline int tpm_send(u32 chip_num, void *cmd, size_t buflen) {
> + return -ENODEV;
> +}
> #endif
> #endif
> --
> 1.7.2.2
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/