On 11/28/21 11:27, Heinrich Schuchardt wrote:
Hello Ilias,

I have compiled qemu_arm64_defconfig with CONFIG_CMD_EFIDEBUG=y and CONFIG_CMD_UNBIND.

When I execute the commands

     efidebug dh
     unbind tpm 0

a crash occurs in tpm_tis_ready().

tpm_tis_remove() calls iounmmap() before calling tpm_tis_cleanup() which invokes tpm_tis_ready(). tpm_tis_ready() writes to the unmapped IO.

You should not unmap the IO region before accessing it in tpm_tis_ready(). But swapping these calls is not enough to fix the problem.

Best regards

Heinrich


The crash is in mmio_write_bytes(). The call chain is:

In the call chain device_remove -> tpm_tis_remove -> tpm_tis_cleanup -> tpm_tis_ready -> mmio_write_bytes

chip->locality is -1 in tpm_tis_remove. This leads to mmio_write_bytes being called with address = 0xfffff018

ret = tpm_tis_request_locality(dev, 0); is missing.

Best regards

Heinrich

Reply via email to