]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoc: qcom: q6prm: Use automatic cleanup of kfree()
authorSrinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Thu, 23 Oct 2025 10:24:39 +0000 (11:24 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 5 Nov 2025 13:28:30 +0000 (13:28 +0000)
Its common pattern in q6dsp code to allocate temporary buffer
to send gpr/apr packets and free at the function exit.
Now this can be simplified via __free(kfree) mechanism.

No functional changes.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Link: https://patch.msgid.link/20251023102444.88158-16-srinivas.kandagatla@oss.qualcomm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/qdsp6/q6prm.c

index 81554d20265897e319fc3cf34d9191960c2bbe51..0b8fad0bc83242f814805ede3bee4e3fb4ade0db 100644 (file)
@@ -62,8 +62,7 @@ static int q6prm_set_hw_core_req(struct device *dev, uint32_t hw_block_id, bool
        struct prm_cmd_request_hw_core *req;
        gpr_device_t *gdev = prm->gdev;
        uint32_t opcode, rsp_opcode;
-       struct gpr_pkt *pkt;
-       int rc;
+       struct gpr_pkt *pkt __free(kfree) = NULL;
 
        if (enable) {
                opcode = PRM_CMD_REQUEST_HW_RSC;
@@ -88,11 +87,7 @@ static int q6prm_set_hw_core_req(struct device *dev, uint32_t hw_block_id, bool
 
        req->hw_clk_id = hw_block_id;
 
-       rc = q6prm_send_cmd_sync(prm, pkt, rsp_opcode);
-
-       kfree(pkt);
-
-       return rc;
+       return q6prm_send_cmd_sync(prm, pkt, rsp_opcode);
 }
 
 int q6prm_vote_lpass_core_hw(struct device *dev, uint32_t hw_block_id,
@@ -116,8 +111,7 @@ static int q6prm_request_lpass_clock(struct device *dev, int clk_id, int clk_att
        struct apm_module_param_data *param_data;
        struct prm_cmd_request_rsc *req;
        gpr_device_t *gdev = prm->gdev;
-       struct gpr_pkt *pkt;
-       int rc;
+       struct gpr_pkt *pkt __free(kfree) = NULL;
 
        pkt = audioreach_alloc_cmd_pkt(sizeof(*req), PRM_CMD_REQUEST_HW_RSC, 0, gdev->svc.id,
                                       GPR_PRM_MODULE_IID);
@@ -139,11 +133,7 @@ static int q6prm_request_lpass_clock(struct device *dev, int clk_id, int clk_att
        req->clock_id.clock_attri = clk_attr;
        req->clock_id.clock_root = clk_root;
 
-       rc = q6prm_send_cmd_sync(prm, pkt, PRM_CMD_RSP_REQUEST_HW_RSC);
-
-       kfree(pkt);
-
-       return rc;
+       return q6prm_send_cmd_sync(prm, pkt, PRM_CMD_RSP_REQUEST_HW_RSC);
 }
 
 static int q6prm_release_lpass_clock(struct device *dev, int clk_id, int clk_attr, int clk_root,
@@ -153,8 +143,7 @@ static int q6prm_release_lpass_clock(struct device *dev, int clk_id, int clk_att
        struct apm_module_param_data *param_data;
        struct prm_cmd_release_rsc *rel;
        gpr_device_t *gdev = prm->gdev;
-       struct gpr_pkt *pkt;
-       int rc;
+       struct gpr_pkt *pkt __free(kfree) = NULL;
 
        pkt = audioreach_alloc_cmd_pkt(sizeof(*rel), PRM_CMD_RELEASE_HW_RSC, 0, gdev->svc.id,
                                       GPR_PRM_MODULE_IID);
@@ -173,11 +162,7 @@ static int q6prm_release_lpass_clock(struct device *dev, int clk_id, int clk_att
        rel->num_clk_id = 1;
        rel->clock_id.clock_id = clk_id;
 
-       rc = q6prm_send_cmd_sync(prm, pkt, PRM_CMD_RSP_RELEASE_HW_RSC);
-
-       kfree(pkt);
-
-       return rc;
+       return q6prm_send_cmd_sync(prm, pkt, PRM_CMD_RSP_RELEASE_HW_RSC);
 }
 
 int q6prm_set_lpass_clock(struct device *dev, int clk_id, int clk_attr, int clk_root,