summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mailbox/pcc.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c
index 025c4cdd8d26..d8739eca5ac0 100644
--- a/drivers/mailbox/pcc.c
+++ b/drivers/mailbox/pcc.c
@@ -377,18 +377,20 @@ pcc_mbox_request_channel(struct mbox_client *cl, int subspace_id)
return ERR_PTR(-EBUSY);
}
- rc = mbox_bind_client(chan, cl);
- if (rc)
- return ERR_PTR(rc);
-
pcc_mchan = &pchan->chan;
pcc_mchan->shmem = acpi_os_ioremap(pcc_mchan->shmem_base_addr,
pcc_mchan->shmem_size);
- if (pcc_mchan->shmem)
- return pcc_mchan;
+ if (!pcc_mchan->shmem)
+ return ERR_PTR(-ENXIO);
- mbox_free_channel(chan);
- return ERR_PTR(-ENXIO);
+ rc = mbox_bind_client(chan, cl);
+ if (rc) {
+ iounmap(pcc_mchan->shmem);
+ pcc_mchan->shmem = NULL;
+ return ERR_PTR(rc);
+ }
+
+ return pcc_mchan;
}
EXPORT_SYMBOL_GPL(pcc_mbox_request_channel);