diff options
author | Stefan Berger <stefanb@linux.vnet.ibm.com> | 2016-11-07 07:14:33 -0500 |
---|---|---|
committer | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> | 2016-11-27 18:31:31 -0500 |
commit | 6804f6bba09997393904a112f2043963a8e08abf (patch) | |
tree | ba8fc05633ceb4f71eaa0a719c1ef1f5840b6601 | |
parent | 2528a64664f8a463d85b6e6876b4025042687553 (diff) |
tpm: Only call pm_runtime_get_sync if device has a parent
Only call pm_runtime_get_sync if the device has a parent. This
change fixes a crash in the tpm_vtpm_proxy driver since that
driver does not have a parent device.
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
-rw-r--r-- | drivers/char/tpm/tpm-interface.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c index ef0fcdb40cc3..a2688ac2b48f 100644 --- a/drivers/char/tpm/tpm-interface.c +++ b/drivers/char/tpm/tpm-interface.c | |||
@@ -357,7 +357,8 @@ ssize_t tpm_transmit(struct tpm_chip *chip, const u8 *buf, size_t bufsiz, | |||
357 | if (!(flags & TPM_TRANSMIT_UNLOCKED)) | 357 | if (!(flags & TPM_TRANSMIT_UNLOCKED)) |
358 | mutex_lock(&chip->tpm_mutex); | 358 | mutex_lock(&chip->tpm_mutex); |
359 | 359 | ||
360 | pm_runtime_get_sync(chip->dev.parent); | 360 | if (chip->dev.parent) |
361 | pm_runtime_get_sync(chip->dev.parent); | ||
361 | 362 | ||
362 | rc = chip->ops->send(chip, (u8 *) buf, count); | 363 | rc = chip->ops->send(chip, (u8 *) buf, count); |
363 | if (rc < 0) { | 364 | if (rc < 0) { |
@@ -400,7 +401,8 @@ out_recv: | |||
400 | dev_err(&chip->dev, | 401 | dev_err(&chip->dev, |
401 | "tpm_transmit: tpm_recv: error %zd\n", rc); | 402 | "tpm_transmit: tpm_recv: error %zd\n", rc); |
402 | out: | 403 | out: |
403 | pm_runtime_put_sync(chip->dev.parent); | 404 | if (chip->dev.parent) |
405 | pm_runtime_put_sync(chip->dev.parent); | ||
404 | 406 | ||
405 | if (!(flags & TPM_TRANSMIT_UNLOCKED)) | 407 | if (!(flags & TPM_TRANSMIT_UNLOCKED)) |
406 | mutex_unlock(&chip->tpm_mutex); | 408 | mutex_unlock(&chip->tpm_mutex); |