From: Jarkko Sakkinen <[email protected]>

Merge TPM_BUF_BOUNDARY_ERROR and TPM_BUF_OVERFLOW into TPM_BUF_INVALID,
given that they are identical (the only difference being the associated
log messages).

In addition, add a missing TPM_BUF_INVALID check to tpm_buf_append_handle()
following the pattern from other functions in tpm-buf.c.

Message-ID: <[email protected]>
Signed-off-by: Jarkko Sakkinen <[email protected]>
Reviewed-by: Jonathan McDowell <[email protected]>
Signed-off-by: Ross Philipson <[email protected]>
---
 drivers/char/tpm/tpm-buf.c                | 10 ++++------
 include/linux/tpm.h                       |  8 +++-----
 security/keys/trusted-keys/trusted_tpm2.c |  6 +++---
 3 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/drivers/char/tpm/tpm-buf.c b/drivers/char/tpm/tpm-buf.c
index 4c4f450630df..61833b4d81f0 100644
--- a/drivers/char/tpm/tpm-buf.c
+++ b/drivers/char/tpm/tpm-buf.c
@@ -103,13 +103,12 @@ EXPORT_SYMBOL_GPL(tpm_buf_length);
  */
 void tpm_buf_append(struct tpm_buf *buf, const u8 *new_data, u16 new_length)
 {
-       /* Return silently if overflow has already happened. */
-       if (buf->flags & TPM_BUF_OVERFLOW)
+       if (buf->flags & TPM_BUF_INVALID)
                return;
 
        if ((buf->length + new_length) > PAGE_SIZE) {
                WARN(1, "tpm_buf: write overflow\n");
-               buf->flags |= TPM_BUF_OVERFLOW;
+               buf->flags |= TPM_BUF_INVALID;
                return;
        }
 
@@ -176,14 +175,13 @@ static void tpm_buf_read(struct tpm_buf *buf, off_t 
*offset, size_t count, void
 {
        off_t next_offset;
 
-       /* Return silently if overflow has already happened. */
-       if (buf->flags & TPM_BUF_BOUNDARY_ERROR)
+       if (buf->flags & TPM_BUF_INVALID)
                return;
 
        next_offset = *offset + count;
        if (next_offset > buf->length) {
                WARN(1, "tpm_buf: read out of boundary\n");
-               buf->flags |= TPM_BUF_BOUNDARY_ERROR;
+               buf->flags |= TPM_BUF_INVALID;
                return;
        }
 
diff --git a/include/linux/tpm.h b/include/linux/tpm.h
index 3630b2ea6aef..3c6a5bcc138a 100644
--- a/include/linux/tpm.h
+++ b/include/linux/tpm.h
@@ -201,12 +201,10 @@ enum tpm_chip_flags {
 #define to_tpm_chip(d) container_of(d, struct tpm_chip, dev)
 
 enum tpm_buf_flags {
-       /* the capacity exceeded: */
-       TPM_BUF_OVERFLOW        = BIT(0),
        /* TPM2B format: */
-       TPM_BUF_TPM2B           = BIT(1),
-       /* read out of boundary: */
-       TPM_BUF_BOUNDARY_ERROR  = BIT(2),
+       TPM_BUF_TPM2B           = BIT(0),
+       /* The buffer is in invalid and unusable state: */
+       TPM_BUF_INVALID         = BIT(1),
 };
 
 /*
diff --git a/security/keys/trusted-keys/trusted_tpm2.c 
b/security/keys/trusted-keys/trusted_tpm2.c
index 29d79c05ed6b..779a2e66ac20 100644
--- a/security/keys/trusted-keys/trusted_tpm2.c
+++ b/security/keys/trusted-keys/trusted_tpm2.c
@@ -312,7 +312,7 @@ int tpm2_seal_trusted(struct tpm_chip *chip,
        /* creation PCR */
        tpm_buf_append_u32(&buf, 0);
 
-       if (buf.flags & TPM_BUF_OVERFLOW) {
+       if (buf.flags & TPM_BUF_INVALID) {
                rc = -E2BIG;
                tpm2_end_auth_session(chip);
                goto out;
@@ -328,7 +328,7 @@ int tpm2_seal_trusted(struct tpm_chip *chip,
                goto out;
 
        blob_len = tpm_buf_read_u32(&buf, &offset);
-       if (blob_len > MAX_BLOB_SIZE || buf.flags & TPM_BUF_BOUNDARY_ERROR) {
+       if (blob_len > MAX_BLOB_SIZE || buf.flags & TPM_BUF_INVALID) {
                rc = -E2BIG;
                goto out;
        }
@@ -441,7 +441,7 @@ static int tpm2_load_cmd(struct tpm_chip *chip,
 
        tpm_buf_append(&buf, blob, blob_len);
 
-       if (buf.flags & TPM_BUF_OVERFLOW) {
+       if (buf.flags & TPM_BUF_INVALID) {
                rc = -E2BIG;
                tpm2_end_auth_session(chip);
                goto out;
-- 
2.47.3


Reply via email to