| .. | .. |
|---|
| 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) |
|---|