diff --git a/usr.sbin/bhyve/tpm_intf_crb.c b/usr.sbin/bhyve/tpm_intf_crb.c --- a/usr.sbin/bhyve/tpm_intf_crb.c +++ b/usr.sbin/bhyve/tpm_intf_crb.c @@ -485,6 +485,8 @@ tpm_crb_deinit(void *sc) { struct tpm_crb *crb; + struct mem_range mr; + char mr_name[NAME_MAX]; if (sc == NULL) { return; @@ -495,6 +497,13 @@ crb->closing = true; pthread_join(crb->thread, NULL); + bzero(&mr, sizeof(struct mem_range)); + strncpy(mr_name, "tpm_intf_crb", sizeof(mr_name)); + mr.name = mr_name; + mr.base = TPM_CRB_ADDRESS; + mr.size = TPM_CRB_LOCALITIES_MAX * TPM_CRB_REGS_SIZE; + unregister_mem(&mr); + free(crb); }