Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b30a90f authored by Stefan Berger's avatar Stefan Berger Committed by Rajiv Andrade
Browse files

tpm: Have tpm_get_timeouts return an error code



Have the tpm_get_timeouts function return an error code.

Signed-off-by: default avatarStefan Berger <stefanb@linux.vnet.ibm.com>
parent e163bc8e
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -527,7 +527,7 @@ void tpm_gen_interrupt(struct tpm_chip *chip)
}
}
EXPORT_SYMBOL_GPL(tpm_gen_interrupt);
EXPORT_SYMBOL_GPL(tpm_gen_interrupt);


void tpm_get_timeouts(struct tpm_chip *chip)
int tpm_get_timeouts(struct tpm_chip *chip)
{
{
	struct tpm_cmd_t tpm_cmd;
	struct tpm_cmd_t tpm_cmd;
	struct timeout_t *timeout_cap;
	struct timeout_t *timeout_cap;
@@ -549,7 +549,7 @@ void tpm_get_timeouts(struct tpm_chip *chip)
	if (be32_to_cpu(tpm_cmd.header.out.return_code) != 0 ||
	if (be32_to_cpu(tpm_cmd.header.out.return_code) != 0 ||
	    be32_to_cpu(tpm_cmd.header.out.length)
	    be32_to_cpu(tpm_cmd.header.out.length)
	    != sizeof(tpm_cmd.header.out) + sizeof(u32) + 4 * sizeof(u32))
	    != sizeof(tpm_cmd.header.out) + sizeof(u32) + 4 * sizeof(u32))
		return;
		return -EINVAL;


	timeout_cap = &tpm_cmd.params.getcap_out.cap.timeout;
	timeout_cap = &tpm_cmd.params.getcap_out.cap.timeout;
	/* Don't overwrite default if value is 0 */
	/* Don't overwrite default if value is 0 */
@@ -580,12 +580,12 @@ duration:
	rc = transmit_cmd(chip, &tpm_cmd, TPM_INTERNAL_RESULT_SIZE,
	rc = transmit_cmd(chip, &tpm_cmd, TPM_INTERNAL_RESULT_SIZE,
			"attempting to determine the durations");
			"attempting to determine the durations");
	if (rc)
	if (rc)
		return;
		return rc;


	if (be32_to_cpu(tpm_cmd.header.out.return_code) != 0 ||
	if (be32_to_cpu(tpm_cmd.header.out.return_code) != 0 ||
	    be32_to_cpu(tpm_cmd.header.out.length)
	    be32_to_cpu(tpm_cmd.header.out.length)
	    != sizeof(tpm_cmd.header.out) + sizeof(u32) + 3 * sizeof(u32))
	    != sizeof(tpm_cmd.header.out) + sizeof(u32) + 3 * sizeof(u32))
		return;
		return -EINVAL;


	duration_cap = &tpm_cmd.params.getcap_out.cap.duration;
	duration_cap = &tpm_cmd.params.getcap_out.cap.duration;
	chip->vendor.duration[TPM_SHORT] =
	chip->vendor.duration[TPM_SHORT] =
@@ -607,6 +607,7 @@ duration:
		chip->vendor.duration_adjusted = true;
		chip->vendor.duration_adjusted = true;
		dev_info(chip->dev, "Adjusting TPM timeout parameters.");
		dev_info(chip->dev, "Adjusting TPM timeout parameters.");
	}
	}
	return 0;
}
}
EXPORT_SYMBOL_GPL(tpm_get_timeouts);
EXPORT_SYMBOL_GPL(tpm_get_timeouts);


+1 −1
Original line number Original line Diff line number Diff line
@@ -279,7 +279,7 @@ struct tpm_cmd_t {


ssize_t	tpm_getcap(struct device *, __be32, cap_t *, const char *);
ssize_t	tpm_getcap(struct device *, __be32, cap_t *, const char *);


extern void tpm_get_timeouts(struct tpm_chip *);
extern int tpm_get_timeouts(struct tpm_chip *);
extern void tpm_gen_interrupt(struct tpm_chip *);
extern void tpm_gen_interrupt(struct tpm_chip *);
extern void tpm_continue_selftest(struct tpm_chip *);
extern void tpm_continue_selftest(struct tpm_chip *);
extern unsigned long tpm_calc_ordinal_duration(struct tpm_chip *, u32);
extern unsigned long tpm_calc_ordinal_duration(struct tpm_chip *, u32);