[PATCH v3 3/3] soc: qcom: apr: Narrow critical section in error path of gpr_alloc_port()

From: Krzysztof Kozlowski

Date: Tue Nov 03 2026 - 10:09:25 EST


Error path of gpr_alloc_port() can unlocok the spinlock earlier, before
printing error message and freeing the local memory, because the
allocated memory is not published outside of this context. Shorter
critical section makes system more responsive, although gain won't be
likely because it is only an error path.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxxxxxxxx>

---

Changes in v3:
1. New patch
---
drivers/soc/qcom/apr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/soc/qcom/apr.c b/drivers/soc/qcom/apr.c
index 80056bd0686b..edddf473943c 100644
--- a/drivers/soc/qcom/apr.c
+++ b/drivers/soc/qcom/apr.c
@@ -117,9 +117,9 @@ gpr_port_t *gpr_alloc_port(struct apr_device *gdev, struct device *dev,
id = idr_alloc_cyclic(&pr->svcs_idr, svc, GPR_DYNAMIC_PORT_START,
GPR_DYNAMIC_PORT_END, GFP_ATOMIC);
if (id < 0) {
+ spin_unlock(&pr->svcs_lock);
dev_err(dev, "Unable to allocate dynamic GPR src port\n");
kfree(port);
- spin_unlock(&pr->svcs_lock);
return ERR_PTR(id);
}

--
2.53.0