linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path
@ 2024-08-22 16:43 Krzysztof Kozlowski
  2024-08-30  9:35 ` Dmitry Baryshkov
  0 siblings, 1 reply; 11+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-22 16:43 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Andy Gross, linux-arm-msm,
	linux-kernel
  Cc: Krzysztof Kozlowski, stable

If of_parse_phandle_with_args() succeeds, the OF node reference should
be dropped, regardless of number of phandle arguments.

Cc: <stable@vger.kernel.org>
Fixes: 9460ae2ff308 ("soc: qcom: Introduce common SMEM state machine code")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/soc/qcom/smem_state.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/soc/qcom/smem_state.c b/drivers/soc/qcom/smem_state.c
index d9bfac6c54fb..cc5be8019b6a 100644
--- a/drivers/soc/qcom/smem_state.c
+++ b/drivers/soc/qcom/smem_state.c
@@ -112,7 +112,8 @@ struct qcom_smem_state *qcom_smem_state_get(struct device *dev,
 
 	if (args.args_count != 1) {
 		dev_err(dev, "invalid #qcom,smem-state-cells\n");
-		return ERR_PTR(-EINVAL);
+		state = ERR_PTR(-EINVAL);
+		goto put;
 	}
 
 	state = of_node_to_state(args.np);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 1/3] soc: qcom: pmic_glink_altmode: simplify locking with guard()
@ 2024-08-22 16:48 Krzysztof Kozlowski
  2024-08-22 16:48 ` [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-22 16:48 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Andy Gross, linux-arm-msm,
	linux-kernel
  Cc: Krzysztof Kozlowski

Simplify error handling (less gotos) over locks with guard().

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/soc/qcom/pmic_glink_altmode.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/soc/qcom/pmic_glink_altmode.c b/drivers/soc/qcom/pmic_glink_altmode.c
index 463b1c528831..bd06ce161804 100644
--- a/drivers/soc/qcom/pmic_glink_altmode.c
+++ b/drivers/soc/qcom/pmic_glink_altmode.c
@@ -5,6 +5,7 @@
  */
 #include <linux/auxiliary_bus.h>
 #include <linux/bitfield.h>
+#include <linux/cleanup.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
@@ -114,7 +115,7 @@ static int pmic_glink_altmode_request(struct pmic_glink_altmode *altmode, u32 cm
 	 * The USBC_CMD_WRITE_REQ ack doesn't identify the request, so wait for
 	 * one ack at a time.
 	 */
-	mutex_lock(&altmode->lock);
+	guard(mutex)(&altmode->lock);
 
 	req.hdr.owner = cpu_to_le32(altmode->owner_id);
 	req.hdr.type = cpu_to_le32(PMIC_GLINK_REQ_RESP);
@@ -125,18 +126,16 @@ static int pmic_glink_altmode_request(struct pmic_glink_altmode *altmode, u32 cm
 	ret = pmic_glink_send(altmode->client, &req, sizeof(req));
 	if (ret) {
 		dev_err(altmode->dev, "failed to send altmode request: %#x (%d)\n", cmd, ret);
-		goto out_unlock;
+		return ret;
 	}
 
 	left = wait_for_completion_timeout(&altmode->pan_ack, 5 * HZ);
 	if (!left) {
 		dev_err(altmode->dev, "timeout waiting for altmode request ack for: %#x\n", cmd);
-		ret = -ETIMEDOUT;
+		return -ETIMEDOUT;
 	}
 
-out_unlock:
-	mutex_unlock(&altmode->lock);
-	return ret;
+	return 0;
 }
 
 static void pmic_glink_altmode_enable_dp(struct pmic_glink_altmode *altmode,
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path
  2024-08-22 16:48 [PATCH 1/3] soc: qcom: pmic_glink_altmode: simplify locking with guard() Krzysztof Kozlowski
@ 2024-08-22 16:48 ` Krzysztof Kozlowski
  2024-08-22 16:52   ` Krzysztof Kozlowski
                     ` (3 more replies)
  2024-08-22 16:48 ` [PATCH 2/3] soc: qcom: pbs: simplify locking with guard() Krzysztof Kozlowski
                   ` (2 subsequent siblings)
  3 siblings, 4 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-22 16:48 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Andy Gross, linux-arm-msm,
	linux-kernel
  Cc: Krzysztof Kozlowski, stable

If of_parse_phandle_with_args() succeeds, the OF node reference should
be dropped, regardless of number of phandle arguments.

Cc: <stable@vger.kernel.org>
Fixes: 9460ae2ff308 ("soc: qcom: Introduce common SMEM state machine code")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/soc/qcom/smem_state.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/soc/qcom/smem_state.c b/drivers/soc/qcom/smem_state.c
index d9bfac6c54fb..cc5be8019b6a 100644
--- a/drivers/soc/qcom/smem_state.c
+++ b/drivers/soc/qcom/smem_state.c
@@ -112,7 +112,8 @@ struct qcom_smem_state *qcom_smem_state_get(struct device *dev,
 
 	if (args.args_count != 1) {
 		dev_err(dev, "invalid #qcom,smem-state-cells\n");
-		return ERR_PTR(-EINVAL);
+		state = ERR_PTR(-EINVAL);
+		goto put;
 	}
 
 	state = of_node_to_state(args.np);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/3] soc: qcom: pbs: simplify locking with guard()
  2024-08-22 16:48 [PATCH 1/3] soc: qcom: pmic_glink_altmode: simplify locking with guard() Krzysztof Kozlowski
  2024-08-22 16:48 ` [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
@ 2024-08-22 16:48 ` Krzysztof Kozlowski
  2024-08-22 16:48 ` [PATCH 3/3] soc: qcom: smem_state: " Krzysztof Kozlowski
  2024-12-26 22:38 ` (subset) [PATCH 1/3] soc: qcom: pmic_glink_altmode: " Bjorn Andersson
  3 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-22 16:48 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Andy Gross, linux-arm-msm,
	linux-kernel
  Cc: Krzysztof Kozlowski

Simplify error handling (less gotos) over locks with guard().

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/soc/qcom/qcom-pbs.c | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/drivers/soc/qcom/qcom-pbs.c b/drivers/soc/qcom/qcom-pbs.c
index 77a70d3d0d0b..1cc5d045f9dd 100644
--- a/drivers/soc/qcom/qcom-pbs.c
+++ b/drivers/soc/qcom/qcom-pbs.c
@@ -84,16 +84,16 @@ int qcom_pbs_trigger_event(struct pbs_dev *pbs, u8 bitmap)
 	if (IS_ERR_OR_NULL(pbs))
 		return -EINVAL;
 
-	mutex_lock(&pbs->lock);
+	guard(mutex)(&pbs->lock);
 	ret = regmap_read(pbs->regmap, pbs->base + PBS_CLIENT_SCRATCH2, &val);
 	if (ret < 0)
-		goto out;
+		return ret;
 
 	if (val == PBS_CLIENT_SCRATCH2_ERROR) {
 		/* PBS error - clear SCRATCH2 register */
 		ret = regmap_write(pbs->regmap, pbs->base + PBS_CLIENT_SCRATCH2, 0);
 		if (ret < 0)
-			goto out;
+			return ret;
 	}
 
 	for (bit_pos = 0; bit_pos < 8; bit_pos++) {
@@ -104,37 +104,31 @@ int qcom_pbs_trigger_event(struct pbs_dev *pbs, u8 bitmap)
 		ret = regmap_update_bits(pbs->regmap, pbs->base + PBS_CLIENT_SCRATCH2,
 					 BIT(bit_pos), 0);
 		if (ret < 0)
-			goto out_clear_scratch1;
+			break;
 
 		/* Set the PBS sequence bit position */
 		ret = regmap_update_bits(pbs->regmap, pbs->base + PBS_CLIENT_SCRATCH1,
 					 BIT(bit_pos), BIT(bit_pos));
 		if (ret < 0)
-			goto out_clear_scratch1;
+			break;
 
 		/* Initiate the SW trigger */
 		ret = regmap_update_bits(pbs->regmap, pbs->base + PBS_CLIENT_TRIG_CTL,
 					 PBS_CLIENT_SW_TRIG_BIT, PBS_CLIENT_SW_TRIG_BIT);
 		if (ret < 0)
-			goto out_clear_scratch1;
+			break;
 
 		ret = qcom_pbs_wait_for_ack(pbs, bit_pos);
 		if (ret < 0)
-			goto out_clear_scratch1;
+			break;
 
 		/* Clear the PBS sequence bit position */
 		regmap_update_bits(pbs->regmap, pbs->base + PBS_CLIENT_SCRATCH1, BIT(bit_pos), 0);
 		regmap_update_bits(pbs->regmap, pbs->base + PBS_CLIENT_SCRATCH2, BIT(bit_pos), 0);
 	}
 
-out_clear_scratch1:
 	/* Clear all the requested bitmap */
-	ret = regmap_update_bits(pbs->regmap, pbs->base + PBS_CLIENT_SCRATCH1, bitmap, 0);
-
-out:
-	mutex_unlock(&pbs->lock);
-
-	return ret;
+	return regmap_update_bits(pbs->regmap, pbs->base + PBS_CLIENT_SCRATCH1, bitmap, 0);
 }
 EXPORT_SYMBOL_GPL(qcom_pbs_trigger_event);
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/3] soc: qcom: smem_state: simplify locking with guard()
  2024-08-22 16:48 [PATCH 1/3] soc: qcom: pmic_glink_altmode: simplify locking with guard() Krzysztof Kozlowski
  2024-08-22 16:48 ` [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
  2024-08-22 16:48 ` [PATCH 2/3] soc: qcom: pbs: simplify locking with guard() Krzysztof Kozlowski
@ 2024-08-22 16:48 ` Krzysztof Kozlowski
  2024-12-26 22:38 ` (subset) [PATCH 1/3] soc: qcom: pmic_glink_altmode: " Bjorn Andersson
  3 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-22 16:48 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Andy Gross, linux-arm-msm,
	linux-kernel
  Cc: Krzysztof Kozlowski

Simplify error handling (less gotos) over locks with guard().

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/soc/qcom/smem_state.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/soc/qcom/smem_state.c b/drivers/soc/qcom/smem_state.c
index a8be3a2f3382..cc5be8019b6a 100644
--- a/drivers/soc/qcom/smem_state.c
+++ b/drivers/soc/qcom/smem_state.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2015, Sony Mobile Communications Inc.
  * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
  */
+#include <linux/cleanup.h>
 #include <linux/device.h>
 #include <linux/list.h>
 #include <linux/module.h>
@@ -60,20 +61,15 @@ static struct qcom_smem_state *of_node_to_state(struct device_node *np)
 {
 	struct qcom_smem_state *state;
 
-	mutex_lock(&list_lock);
+	guard(mutex)(&list_lock);
 
 	list_for_each_entry(state, &smem_states, list) {
 		if (state->of_node == np) {
 			kref_get(&state->refcount);
-			goto unlock;
+			return state;
 		}
 	}
-	state = ERR_PTR(-EPROBE_DEFER);
-
-unlock:
-	mutex_unlock(&list_lock);
-
-	return state;
+	return ERR_PTR(-EPROBE_DEFER);
 }
 
 /**
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path
  2024-08-22 16:48 ` [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
@ 2024-08-22 16:52   ` Krzysztof Kozlowski
  2024-10-07 14:26   ` (subset) " Bjorn Andersson
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-22 16:52 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Andy Gross, linux-arm-msm,
	linux-kernel
  Cc: stable

On 22/08/2024 18:48, Krzysztof Kozlowski wrote:
> If of_parse_phandle_with_args() succeeds, the OF node reference should
> be dropped, regardless of number of phandle arguments.
> 
> Cc: <stable@vger.kernel.org>
> Fixes: 9460ae2ff308 ("soc: qcom: Introduce common SMEM state machine code")
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---

And this one patch is a duplicate of what I sent separately. Can be
ignored. Sorry for the mess, time to finish work for today. :(

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path
  2024-08-22 16:43 [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
@ 2024-08-30  9:35 ` Dmitry Baryshkov
  0 siblings, 0 replies; 11+ messages in thread
From: Dmitry Baryshkov @ 2024-08-30  9:35 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Bjorn Andersson, Konrad Dybcio, Andy Gross, linux-arm-msm,
	linux-kernel, stable

On Thu, Aug 22, 2024 at 06:43:03PM GMT, Krzysztof Kozlowski wrote:
> If of_parse_phandle_with_args() succeeds, the OF node reference should
> be dropped, regardless of number of phandle arguments.
> 
> Cc: <stable@vger.kernel.org>
> Fixes: 9460ae2ff308 ("soc: qcom: Introduce common SMEM state machine code")
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
>  drivers/soc/qcom/smem_state.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: (subset) [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path
  2024-08-22 16:48 ` [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
  2024-08-22 16:52   ` Krzysztof Kozlowski
@ 2024-10-07 14:26   ` Bjorn Andersson
  2024-12-26 18:26   ` Bjorn Andersson
  2024-12-26 22:38   ` Bjorn Andersson
  3 siblings, 0 replies; 11+ messages in thread
From: Bjorn Andersson @ 2024-10-07 14:26 UTC (permalink / raw)
  To: Konrad Dybcio, Andy Gross, linux-arm-msm, linux-kernel,
	Krzysztof Kozlowski
  Cc: stable


On Thu, 22 Aug 2024 18:48:51 +0200, Krzysztof Kozlowski wrote:
> If of_parse_phandle_with_args() succeeds, the OF node reference should
> be dropped, regardless of number of phandle arguments.
> 
> 

Applied, thanks!

[2/3] soc: qcom: pbs: simplify locking with guard()
      commit: 6187aaae71ec236163d96601b37216e110bf7554
[3/3] soc: qcom: smem_state: simplify locking with guard()
      commit: cd3a3e60ebfe6f62ccf9d2164f6455e0b1ae1884

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: (subset) [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path
  2024-08-22 16:48 ` [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
  2024-08-22 16:52   ` Krzysztof Kozlowski
  2024-10-07 14:26   ` (subset) " Bjorn Andersson
@ 2024-12-26 18:26   ` Bjorn Andersson
  2024-12-26 22:38   ` Bjorn Andersson
  3 siblings, 0 replies; 11+ messages in thread
From: Bjorn Andersson @ 2024-12-26 18:26 UTC (permalink / raw)
  To: Konrad Dybcio, Andy Gross, linux-arm-msm, linux-kernel,
	Krzysztof Kozlowski
  Cc: stable


On Thu, 22 Aug 2024 18:48:51 +0200, Krzysztof Kozlowski wrote:
> If of_parse_phandle_with_args() succeeds, the OF node reference should
> be dropped, regardless of number of phandle arguments.
> 
> 

Applied, thanks!

[1/1] soc: qcom: smem_state: fix missing of_node_put in error path
      commit: 70096b4990848229d0784c5e51dc3c7c072f1111

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: (subset) [PATCH 1/3] soc: qcom: pmic_glink_altmode: simplify locking with guard()
  2024-08-22 16:48 [PATCH 1/3] soc: qcom: pmic_glink_altmode: simplify locking with guard() Krzysztof Kozlowski
                   ` (2 preceding siblings ...)
  2024-08-22 16:48 ` [PATCH 3/3] soc: qcom: smem_state: " Krzysztof Kozlowski
@ 2024-12-26 22:38 ` Bjorn Andersson
  3 siblings, 0 replies; 11+ messages in thread
From: Bjorn Andersson @ 2024-12-26 22:38 UTC (permalink / raw)
  To: Konrad Dybcio, Andy Gross, linux-arm-msm, linux-kernel,
	Krzysztof Kozlowski


On Thu, 22 Aug 2024 18:48:50 +0200, Krzysztof Kozlowski wrote:
> Simplify error handling (less gotos) over locks with guard().
> 
> 

Applied, thanks!

[1/3] soc: qcom: pmic_glink_altmode: simplify locking with guard()
      commit: 95fee3009461f4a65247db677f445fbd67776019

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: (subset) [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path
  2024-08-22 16:48 ` [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
                     ` (2 preceding siblings ...)
  2024-12-26 18:26   ` Bjorn Andersson
@ 2024-12-26 22:38   ` Bjorn Andersson
  3 siblings, 0 replies; 11+ messages in thread
From: Bjorn Andersson @ 2024-12-26 22:38 UTC (permalink / raw)
  To: Konrad Dybcio, Andy Gross, linux-arm-msm, linux-kernel,
	Krzysztof Kozlowski
  Cc: stable


On Thu, 22 Aug 2024 18:48:51 +0200, Krzysztof Kozlowski wrote:
> If of_parse_phandle_with_args() succeeds, the OF node reference should
> be dropped, regardless of number of phandle arguments.
> 
> 

Applied, thanks!

[1/1] soc: qcom: smem_state: fix missing of_node_put in error path
      commit: 70096b4990848229d0784c5e51dc3c7c072f1111

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-12-26 22:39 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-22 16:48 [PATCH 1/3] soc: qcom: pmic_glink_altmode: simplify locking with guard() Krzysztof Kozlowski
2024-08-22 16:48 ` [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
2024-08-22 16:52   ` Krzysztof Kozlowski
2024-10-07 14:26   ` (subset) " Bjorn Andersson
2024-12-26 18:26   ` Bjorn Andersson
2024-12-26 22:38   ` Bjorn Andersson
2024-08-22 16:48 ` [PATCH 2/3] soc: qcom: pbs: simplify locking with guard() Krzysztof Kozlowski
2024-08-22 16:48 ` [PATCH 3/3] soc: qcom: smem_state: " Krzysztof Kozlowski
2024-12-26 22:38 ` (subset) [PATCH 1/3] soc: qcom: pmic_glink_altmode: " Bjorn Andersson
  -- strict thread matches above, loose matches on Subject: below --
2024-08-22 16:43 [PATCH] soc: qcom: smem_state: fix missing of_node_put in error path Krzysztof Kozlowski
2024-08-30  9:35 ` Dmitry Baryshkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).