mailbox: pcc: Put the PCCT table for error path
authorHanjun Guo <guohanjun@huawei.com>
Wed, 22 Jul 2020 09:40:40 +0000 (17:40 +0800)
committerJassi Brar <jaswinder.singh@linaro.org>
Tue, 4 Aug 2020 04:25:19 +0000 (23:25 -0500)
The acpi_get_table() should be coupled with acpi_put_table() if
the mapped table is not used at runtime to release the table
mapping.

In acpi_pcc_probe(), the PCCT table entries will be used as private
data for communication chan at runtime, but the table should be put
for error path.

Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
drivers/mailbox/pcc.c

index 8c7fac3..ef9ecd1 100644 (file)
@@ -457,14 +457,17 @@ static int __init acpi_pcc_probe(void)
                        pr_warn("Error parsing PCC subspaces from PCCT\n");
                else
                        pr_warn("Invalid PCCT: %d PCC subspaces\n", count);
-               return -EINVAL;
+
+               rc = -EINVAL;
+               goto err_put_pcct;
        }
 
        pcc_mbox_channels = kcalloc(count, sizeof(struct mbox_chan),
                                    GFP_KERNEL);
        if (!pcc_mbox_channels) {
                pr_err("Could not allocate space for PCC mbox channels\n");
-               return -ENOMEM;
+               rc = -ENOMEM;
+               goto err_put_pcct;
        }
 
        pcc_doorbell_vaddr = kcalloc(count, sizeof(void *), GFP_KERNEL);
@@ -535,6 +538,8 @@ err_free_db_vaddr:
        kfree(pcc_doorbell_vaddr);
 err_free_mbox:
        kfree(pcc_mbox_channels);
+err_put_pcct:
+       acpi_put_table(pcct_tbl);
        return rc;
 }