.. | .. |
---|
252 | 252 | iowrite32(CRB_LOC_CTRL_RELINQUISH, &priv->regs_h->loc_ctrl); |
---|
253 | 253 | if (!crb_wait_for_reg_32(&priv->regs_h->loc_state, mask, value, |
---|
254 | 254 | TPM2_TIMEOUT_C)) { |
---|
255 | | - dev_warn(dev, "TPM_LOC_STATE_x.requestAccess timed out\n"); |
---|
| 255 | + dev_warn(dev, "TPM_LOC_STATE_x.Relinquish timed out\n"); |
---|
256 | 256 | return -ETIME; |
---|
257 | 257 | } |
---|
258 | 258 | |
---|
.. | .. |
---|
676 | 676 | |
---|
677 | 677 | /* Should the FIFO driver handle this? */ |
---|
678 | 678 | sm = buf->start_method; |
---|
679 | | - if (sm == ACPI_TPM2_MEMORY_MAPPED) |
---|
680 | | - return -ENODEV; |
---|
| 679 | + if (sm == ACPI_TPM2_MEMORY_MAPPED) { |
---|
| 680 | + rc = -ENODEV; |
---|
| 681 | + goto out; |
---|
| 682 | + } |
---|
681 | 683 | |
---|
682 | 684 | priv = devm_kzalloc(dev, sizeof(struct crb_priv), GFP_KERNEL); |
---|
683 | | - if (!priv) |
---|
684 | | - return -ENOMEM; |
---|
| 685 | + if (!priv) { |
---|
| 686 | + rc = -ENOMEM; |
---|
| 687 | + goto out; |
---|
| 688 | + } |
---|
685 | 689 | |
---|
686 | 690 | if (sm == ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC) { |
---|
687 | 691 | if (buf->header.length < (sizeof(*buf) + sizeof(*crb_smc))) { |
---|
.. | .. |
---|
689 | 693 | FW_BUG "TPM2 ACPI table has wrong size %u for start method type %d\n", |
---|
690 | 694 | buf->header.length, |
---|
691 | 695 | ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC); |
---|
692 | | - return -EINVAL; |
---|
| 696 | + rc = -EINVAL; |
---|
| 697 | + goto out; |
---|
693 | 698 | } |
---|
694 | 699 | crb_smc = ACPI_ADD_PTR(struct tpm2_crb_smc, buf, sizeof(*buf)); |
---|
695 | 700 | priv->smc_func_id = crb_smc->smc_func_id; |
---|
.. | .. |
---|
700 | 705 | |
---|
701 | 706 | rc = crb_map_io(device, priv, buf); |
---|
702 | 707 | if (rc) |
---|
703 | | - return rc; |
---|
| 708 | + goto out; |
---|
704 | 709 | |
---|
705 | 710 | chip = tpmm_chip_alloc(dev, &tpm_crb); |
---|
706 | | - if (IS_ERR(chip)) |
---|
707 | | - return PTR_ERR(chip); |
---|
| 711 | + if (IS_ERR(chip)) { |
---|
| 712 | + rc = PTR_ERR(chip); |
---|
| 713 | + goto out; |
---|
| 714 | + } |
---|
708 | 715 | |
---|
709 | 716 | dev_set_drvdata(&chip->dev, priv); |
---|
710 | 717 | chip->acpi_dev_handle = device->handle; |
---|
711 | 718 | chip->flags = TPM_CHIP_FLAG_TPM2; |
---|
712 | 719 | |
---|
713 | | - return tpm_chip_register(chip); |
---|
| 720 | + rc = tpm_chip_register(chip); |
---|
| 721 | + |
---|
| 722 | +out: |
---|
| 723 | + acpi_put_table((struct acpi_table_header *)buf); |
---|
| 724 | + return rc; |
---|
714 | 725 | } |
---|
715 | 726 | |
---|
716 | 727 | static int crb_acpi_remove(struct acpi_device *device) |
---|