Messages in this thread Patch in this message | | | Date | Mon, 20 Dec 2021 20:31:27 -0500 | Subject | Re: [PATCH] tpm: Fix kexec crash due to access to ops NULL pointer (powerpc) | From | Stefan Berger <> |
| |
On 12/20/21 20:13, Jason Gunthorpe wrote: > On Mon, Dec 20, 2021 at 08:05:58PM -0500, Stefan Berger wrote: > >> diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c >> index ddaeceb7e109..4cb908349b31 100644 >> +++ b/drivers/char/tpm/tpm-chip.c >> @@ -473,15 +473,8 @@ static void tpm_del_char_device(struct tpm_chip *chip) >> mutex_unlock(&idr_lock); >> >> /* Make the driver uncallable. */ >> - down_write(&chip->ops_sem); >> - if (chip->flags & TPM_CHIP_FLAG_TPM2) { >> - if (!tpm_chip_start(chip)) { >> - tpm2_shutdown(chip, TPM2_SU_CLEAR); >> - tpm_chip_stop(chip); >> - } >> - } >> - chip->ops = NULL; >> - up_write(&chip->ops_sem); >> + if (chip->ops) > ops cannot be read without locking
This here could be an alternative:
diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index ddaeceb7e109..7772b475ebc0 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -474,7 +474,7 @@ static void tpm_del_char_device(struct tpm_chip *chip)
/* Make the driver uncallable. */ down_write(&chip->ops_sem); - if (chip->flags & TPM_CHIP_FLAG_TPM2) { + if (chip->ops && chip->flags & TPM_CHIP_FLAG_TPM2) { if (!tpm_chip_start(chip)) { tpm2_shutdown(chip, TPM2_SU_CLEAR); tpm_chip_stop(chip); Stefan
> > Jason
| |