]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
soundwire: qcom: Use guard to avoid mixing cleanup and goto
authorKrzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Mon, 1 Dec 2025 10:26:28 +0000 (11:26 +0100)
committerVinod Koul <vkoul@kernel.org>
Tue, 16 Dec 2025 09:10:00 +0000 (14:40 +0530)
qcom_swrm_stream_alloc_ports() already uses cleanup.h but also has goto.
Such combination is error-prone and discouraged:

"... and that the "goto" statement can jump between scopes, the
expectation is that usage of "goto" and cleanup helpers is never mixed
in the same function."

Actually simplify the code with a guard which allows to fix the
discouraged style by removing the goto.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Link: https://patch.msgid.link/20251201102627.146182-2-krzysztof.kozlowski@oss.qualcomm.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/soundwire/qcom.c

index 17afc5aa8b44e0c7568d26afe94c53894443e5ad..8102a1b0d5167273b9ddc3c95c6bab9be122f8ea 100644 (file)
@@ -1228,7 +1228,7 @@ static int qcom_swrm_stream_alloc_ports(struct qcom_swrm_ctrl *ctrl,
        struct sdw_port_runtime *p_rt;
        struct sdw_slave *slave;
        unsigned long *port_mask;
-       int maxport, pn, nports = 0, ret = 0;
+       int maxport, pn, nports = 0;
        unsigned int m_port;
        struct sdw_port_config *pconfig __free(kfree) = kcalloc(ctrl->nports,
                                                                sizeof(*pconfig), GFP_KERNEL);
@@ -1246,7 +1246,8 @@ static int qcom_swrm_stream_alloc_ports(struct qcom_swrm_ctrl *ctrl,
        sconfig.type = stream->type;
        sconfig.bps = 1;
 
-       mutex_lock(&ctrl->port_lock);
+       guard(mutex)(&ctrl->port_lock);
+
        list_for_each_entry(m_rt, &stream->master_list, stream_node) {
                /*
                 * For streams with multiple masters:
@@ -1272,8 +1273,7 @@ static int qcom_swrm_stream_alloc_ports(struct qcom_swrm_ctrl *ctrl,
 
                                if (pn > maxport) {
                                        dev_err(ctrl->dev, "All ports busy\n");
-                                       ret = -EBUSY;
-                                       goto out;
+                                       return -EBUSY;
                                }
                                set_bit(pn, port_mask);
                                pconfig[nports].num = pn;
@@ -1285,10 +1285,8 @@ static int qcom_swrm_stream_alloc_ports(struct qcom_swrm_ctrl *ctrl,
 
        sdw_stream_add_master(&ctrl->bus, &sconfig, pconfig,
                              nports, stream);
-out:
-       mutex_unlock(&ctrl->port_lock);
 
-       return ret;
+       return 0;
 }
 
 static int qcom_swrm_hw_params(struct snd_pcm_substream *substream,