mirror of https://github.com/torvalds/linux.git
tpm: add bufsiz parameter in the .send callback
Add a new `bufsiz` parameter to the `.send` callback in `tpm_class_ops`. This parameter will allow drivers to differentiate between the actual command length to send and the total buffer size. Currently `bufsiz` is not used, but it will be used to implement devices with synchronous send() to send the command and receive the response on the same buffer. Also rename the previous parameter `len` to `cmd_len` in the declaration to make it clear that it contains the length in bytes of the command stored in the buffer. The semantics don't change and it can be used as before by drivers. This is an optimization since the drivers could get it from the header, but let's avoid duplicating code. While we are here, resolve a checkpatch warning: WARNING: Unnecessary space before function pointer arguments #66: FILE: include/linux/tpm.h:90: + int (*send) (struct tpm_chip *chip, u8 *buf, size_t bufsiz, Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Suggested-by: Jarkko Sakkinen <jarkko@kernel.org> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
This commit is contained in:
parent
89be9a83cc
commit
07d8004d6f
|
|
@ -300,7 +300,7 @@ static irqreturn_t tpm_ioserirq_handler(int irq, void *dev_id)
|
|||
* send TPM commands through the I2C bus.
|
||||
*/
|
||||
static int st33zp24_send(struct tpm_chip *chip, unsigned char *buf,
|
||||
size_t len)
|
||||
size_t bufsiz, size_t len)
|
||||
{
|
||||
struct st33zp24_dev *tpm_dev = dev_get_drvdata(&chip->dev);
|
||||
u32 status, i, size, ordinal;
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ static ssize_t tpm_try_transmit(struct tpm_chip *chip, void *buf, size_t bufsiz)
|
|||
return -E2BIG;
|
||||
}
|
||||
|
||||
rc = chip->ops->send(chip, buf, count);
|
||||
rc = chip->ops->send(chip, buf, bufsiz, count);
|
||||
if (rc < 0) {
|
||||
if (rc != -EPIPE)
|
||||
dev_err(&chip->dev,
|
||||
|
|
|
|||
|
|
@ -148,7 +148,8 @@ static int tpm_atml_recv(struct tpm_chip *chip, u8 *buf, size_t count)
|
|||
return size;
|
||||
}
|
||||
|
||||
static int tpm_atml_send(struct tpm_chip *chip, u8 *buf, size_t count)
|
||||
static int tpm_atml_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t count)
|
||||
{
|
||||
struct tpm_atmel_priv *priv = dev_get_drvdata(&chip->dev);
|
||||
int i;
|
||||
|
|
|
|||
|
|
@ -426,7 +426,7 @@ static int tpm_crb_smc_start(struct device *dev, unsigned long func_id)
|
|||
}
|
||||
#endif
|
||||
|
||||
static int crb_send(struct tpm_chip *chip, u8 *buf, size_t len)
|
||||
static int crb_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz, size_t len)
|
||||
{
|
||||
struct crb_priv *priv = dev_get_drvdata(&chip->dev);
|
||||
int rc = 0;
|
||||
|
|
|
|||
|
|
@ -63,13 +63,15 @@ static int ftpm_tee_tpm_op_recv(struct tpm_chip *chip, u8 *buf, size_t count)
|
|||
* ftpm_tee_tpm_op_send() - send TPM commands through the TEE shared memory.
|
||||
* @chip: the tpm_chip description as specified in driver/char/tpm/tpm.h
|
||||
* @buf: the buffer to send.
|
||||
* @bufsiz: the size of the buffer.
|
||||
* @len: the number of bytes to send.
|
||||
*
|
||||
* Return:
|
||||
* In case of success, returns 0.
|
||||
* On failure, -errno
|
||||
*/
|
||||
static int ftpm_tee_tpm_op_send(struct tpm_chip *chip, u8 *buf, size_t len)
|
||||
static int ftpm_tee_tpm_op_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t len)
|
||||
{
|
||||
struct ftpm_tee_private *pvt_data = dev_get_drvdata(chip->dev.parent);
|
||||
size_t resp_len;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,8 @@ struct priv_data {
|
|||
u8 buffer[sizeof(struct tpm_header) + 25];
|
||||
};
|
||||
|
||||
static int i2c_atmel_send(struct tpm_chip *chip, u8 *buf, size_t len)
|
||||
static int i2c_atmel_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t len)
|
||||
{
|
||||
struct priv_data *priv = dev_get_drvdata(&chip->dev);
|
||||
struct i2c_client *client = to_i2c_client(chip->dev.parent);
|
||||
|
|
|
|||
|
|
@ -514,7 +514,8 @@ static int tpm_tis_i2c_recv(struct tpm_chip *chip, u8 *buf, size_t count)
|
|||
return size;
|
||||
}
|
||||
|
||||
static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t len)
|
||||
static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t len)
|
||||
{
|
||||
int rc, status;
|
||||
ssize_t burstcnt;
|
||||
|
|
|
|||
|
|
@ -350,7 +350,8 @@ static int i2c_nuvoton_recv(struct tpm_chip *chip, u8 *buf, size_t count)
|
|||
* tpm.c can skip polling for the data to be available as the interrupt is
|
||||
* waited for here
|
||||
*/
|
||||
static int i2c_nuvoton_send(struct tpm_chip *chip, u8 *buf, size_t len)
|
||||
static int i2c_nuvoton_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t len)
|
||||
{
|
||||
struct priv_data *priv = dev_get_drvdata(&chip->dev);
|
||||
struct device *dev = chip->dev.parent;
|
||||
|
|
|
|||
|
|
@ -191,13 +191,15 @@ static int tpm_ibmvtpm_resume(struct device *dev)
|
|||
* tpm_ibmvtpm_send() - Send a TPM command
|
||||
* @chip: tpm chip struct
|
||||
* @buf: buffer contains data to send
|
||||
* @count: size of buffer
|
||||
* @bufsiz: size of the buffer
|
||||
* @count: length of the command
|
||||
*
|
||||
* Return:
|
||||
* 0 on success,
|
||||
* -errno on error
|
||||
*/
|
||||
static int tpm_ibmvtpm_send(struct tpm_chip *chip, u8 *buf, size_t count)
|
||||
static int tpm_ibmvtpm_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t count)
|
||||
{
|
||||
struct ibmvtpm_dev *ibmvtpm = dev_get_drvdata(&chip->dev);
|
||||
bool retry = true;
|
||||
|
|
|
|||
|
|
@ -312,7 +312,8 @@ static int tpm_inf_recv(struct tpm_chip *chip, u8 * buf, size_t count)
|
|||
return -EIO;
|
||||
}
|
||||
|
||||
static int tpm_inf_send(struct tpm_chip *chip, u8 * buf, size_t count)
|
||||
static int tpm_inf_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t count)
|
||||
{
|
||||
int i;
|
||||
int ret;
|
||||
|
|
|
|||
|
|
@ -178,7 +178,8 @@ static int tpm_nsc_recv(struct tpm_chip *chip, u8 * buf, size_t count)
|
|||
return size;
|
||||
}
|
||||
|
||||
static int tpm_nsc_send(struct tpm_chip *chip, u8 * buf, size_t count)
|
||||
static int tpm_nsc_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t count)
|
||||
{
|
||||
struct tpm_nsc_priv *priv = dev_get_drvdata(&chip->dev);
|
||||
u8 data;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ struct tpm_svsm_priv {
|
|||
void *buffer;
|
||||
};
|
||||
|
||||
static int tpm_svsm_send(struct tpm_chip *chip, u8 *buf, size_t len)
|
||||
static int tpm_svsm_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t len)
|
||||
{
|
||||
struct tpm_svsm_priv *priv = dev_get_drvdata(&chip->dev);
|
||||
int ret;
|
||||
|
|
|
|||
|
|
@ -580,7 +580,8 @@ static int tpm_tis_send_main(struct tpm_chip *chip, const u8 *buf, size_t len)
|
|||
return rc;
|
||||
}
|
||||
|
||||
static int tpm_tis_send(struct tpm_chip *chip, u8 *buf, size_t len)
|
||||
static int tpm_tis_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t len)
|
||||
{
|
||||
int rc, irq;
|
||||
struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev);
|
||||
|
|
|
|||
|
|
@ -546,13 +546,15 @@ static int tpm_cr50_i2c_tis_recv(struct tpm_chip *chip, u8 *buf, size_t buf_len)
|
|||
* tpm_cr50_i2c_tis_send() - TPM transmission callback.
|
||||
* @chip: A TPM chip.
|
||||
* @buf: Buffer to send.
|
||||
* @len: Buffer length.
|
||||
* @bufsiz: Buffer size.
|
||||
* @len: Command length.
|
||||
*
|
||||
* Return:
|
||||
* - 0: Success.
|
||||
* - -errno: A POSIX error code.
|
||||
*/
|
||||
static int tpm_cr50_i2c_tis_send(struct tpm_chip *chip, u8 *buf, size_t len)
|
||||
static int tpm_cr50_i2c_tis_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t len)
|
||||
{
|
||||
size_t burstcnt, limit, sent = 0;
|
||||
u8 tpm_go[4] = { TPM_STS_GO };
|
||||
|
|
|
|||
|
|
@ -321,12 +321,14 @@ static int vtpm_proxy_is_driver_command(struct tpm_chip *chip,
|
|||
*
|
||||
* @chip: tpm chip to use
|
||||
* @buf: send buffer
|
||||
* @bufsiz: size of the buffer
|
||||
* @count: bytes to send
|
||||
*
|
||||
* Return:
|
||||
* 0 in case of success, negative error value otherwise.
|
||||
*/
|
||||
static int vtpm_proxy_tpm_op_send(struct tpm_chip *chip, u8 *buf, size_t count)
|
||||
static int vtpm_proxy_tpm_op_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t count)
|
||||
{
|
||||
struct proxy_dev *proxy_dev = dev_get_drvdata(&chip->dev);
|
||||
|
||||
|
|
|
|||
|
|
@ -131,7 +131,8 @@ static size_t shr_data_offset(struct vtpm_shared_page *shr)
|
|||
return struct_size(shr, extra_pages, shr->nr_extra_pages);
|
||||
}
|
||||
|
||||
static int vtpm_send(struct tpm_chip *chip, u8 *buf, size_t count)
|
||||
static int vtpm_send(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t count)
|
||||
{
|
||||
struct tpm_private *priv = dev_get_drvdata(&chip->dev);
|
||||
struct vtpm_shared_page *shr = priv->shr;
|
||||
|
|
|
|||
|
|
@ -87,7 +87,8 @@ struct tpm_class_ops {
|
|||
const u8 req_complete_val;
|
||||
bool (*req_canceled)(struct tpm_chip *chip, u8 status);
|
||||
int (*recv) (struct tpm_chip *chip, u8 *buf, size_t len);
|
||||
int (*send) (struct tpm_chip *chip, u8 *buf, size_t len);
|
||||
int (*send)(struct tpm_chip *chip, u8 *buf, size_t bufsiz,
|
||||
size_t cmd_len);
|
||||
void (*cancel) (struct tpm_chip *chip);
|
||||
u8 (*status) (struct tpm_chip *chip);
|
||||
void (*update_timeouts)(struct tpm_chip *chip,
|
||||
|
|
|
|||
Loading…
Reference in New Issue