* [PATCH 0/5] soc: qcom: simplify with cleanup.h
@ 2024-07-03 9:42 Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 1/5] soc: qcom: llcc: " Krzysztof Kozlowski
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-03 9:42 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-kernel, Krzysztof Kozlowski
Allocate the memory with scoped/cleanup.h to reduce error handling (less
error paths) and make the code a bit simpler.
Best regards,
Krzysztof
---
Krzysztof Kozlowski (5):
soc: qcom: llcc: simplify with cleanup.h
soc: qcom: mdt_loader: simplify with cleanup.h
soc: qcom: ocmem: simplify with cleanup.h
soc: qcom: pdr: simplify with cleanup.h
soc: qcom: wcnss: simplify with cleanup.h
drivers/soc/qcom/llcc-qcom.c | 6 ++----
drivers/soc/qcom/mdt_loader.c | 6 ++----
drivers/soc/qcom/ocmem.c | 10 ++++------
drivers/soc/qcom/pdr_interface.c | 38 ++++++++++++++------------------------
drivers/soc/qcom/wcnss_ctrl.c | 11 +++++------
5 files changed, 27 insertions(+), 44 deletions(-)
---
base-commit: eec3a8b019937cc4520772df2657a8a105250e04
change-id: 20240703-thermal-const-7fb8e172c183
Best regards,
--
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/5] soc: qcom: llcc: simplify with cleanup.h
2024-07-03 9:42 [PATCH 0/5] soc: qcom: simplify with cleanup.h Krzysztof Kozlowski
@ 2024-07-03 9:42 ` Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 2/5] soc: qcom: mdt_loader: " Krzysztof Kozlowski
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-03 9:42 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-kernel, Krzysztof Kozlowski
Allocate the memory with scoped/cleanup.h to reduce error handling and
make the code a bit simpler.
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
drivers/soc/qcom/llcc-qcom.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c
index 110b1f89aa59..37e11e501728 100644
--- a/drivers/soc/qcom/llcc-qcom.c
+++ b/drivers/soc/qcom/llcc-qcom.c
@@ -7,6 +7,7 @@
#include <linux/bitfield.h>
#include <linux/bitmap.h>
#include <linux/bitops.h>
+#include <linux/cleanup.h>
#include <linux/device.h>
#include <linux/io.h>
#include <linux/kernel.h>
@@ -1294,16 +1295,13 @@ static int qcom_llcc_probe(struct platform_device *pdev)
/* Initialize rest of LLCC bank regmaps */
for (i = 1; i < num_banks; i++) {
- char *base = kasprintf(GFP_KERNEL, "llcc%d_base", i);
+ char *base __free(kfree) = kasprintf(GFP_KERNEL, "llcc%d_base", i);
drv_data->regmaps[i] = qcom_llcc_init_mmio(pdev, i, base);
if (IS_ERR(drv_data->regmaps[i])) {
ret = PTR_ERR(drv_data->regmaps[i]);
- kfree(base);
goto err;
}
-
- kfree(base);
}
drv_data->bcast_regmap = qcom_llcc_init_mmio(pdev, i, "llcc_broadcast_base");
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/5] soc: qcom: mdt_loader: simplify with cleanup.h
2024-07-03 9:42 [PATCH 0/5] soc: qcom: simplify with cleanup.h Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 1/5] soc: qcom: llcc: " Krzysztof Kozlowski
@ 2024-07-03 9:42 ` Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 3/5] soc: qcom: ocmem: " Krzysztof Kozlowski
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-03 9:42 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-kernel, Krzysztof Kozlowski
Allocate the memory with scoped/cleanup.h to reduce error handling and
make the code a bit simpler.
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
drivers/soc/qcom/mdt_loader.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/soc/qcom/mdt_loader.c b/drivers/soc/qcom/mdt_loader.c
index 6f177e46fa0f..b2c0fb55d4ae 100644
--- a/drivers/soc/qcom/mdt_loader.c
+++ b/drivers/soc/qcom/mdt_loader.c
@@ -7,6 +7,7 @@
* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
*/
+#include <linux/cleanup.h>
#include <linux/device.h>
#include <linux/elf.h>
#include <linux/firmware.h>
@@ -37,13 +38,12 @@ static ssize_t mdt_load_split_segment(void *ptr, const struct elf32_phdr *phdrs,
{
const struct elf32_phdr *phdr = &phdrs[segment];
const struct firmware *seg_fw;
- char *seg_name;
ssize_t ret;
if (strlen(fw_name) < 4)
return -EINVAL;
- seg_name = kstrdup(fw_name, GFP_KERNEL);
+ char *seg_name __free(kfree) = kstrdup(fw_name, GFP_KERNEL);
if (!seg_name)
return -ENOMEM;
@@ -52,7 +52,6 @@ static ssize_t mdt_load_split_segment(void *ptr, const struct elf32_phdr *phdrs,
ptr, phdr->p_filesz);
if (ret) {
dev_err(dev, "error %zd loading %s\n", ret, seg_name);
- kfree(seg_name);
return ret;
}
@@ -64,7 +63,6 @@ static ssize_t mdt_load_split_segment(void *ptr, const struct elf32_phdr *phdrs,
}
release_firmware(seg_fw);
- kfree(seg_name);
return ret;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/5] soc: qcom: ocmem: simplify with cleanup.h
2024-07-03 9:42 [PATCH 0/5] soc: qcom: simplify with cleanup.h Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 1/5] soc: qcom: llcc: " Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 2/5] soc: qcom: mdt_loader: " Krzysztof Kozlowski
@ 2024-07-03 9:42 ` Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 4/5] soc: qcom: pdr: " Krzysztof Kozlowski
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-03 9:42 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-kernel, Krzysztof Kozlowski
Allocate the memory with scoped/cleanup.h to reduce error handling (less
error paths) and make the code a bit simpler.
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
drivers/soc/qcom/ocmem.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/soc/qcom/ocmem.c b/drivers/soc/qcom/ocmem.c
index e8841d247953..6b6dd80cbc0f 100644
--- a/drivers/soc/qcom/ocmem.c
+++ b/drivers/soc/qcom/ocmem.c
@@ -10,6 +10,7 @@
*/
#include <linux/bitfield.h>
+#include <linux/cleanup.h>
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/kernel.h>
@@ -216,7 +217,6 @@ EXPORT_SYMBOL_GPL(of_get_ocmem);
struct ocmem_buf *ocmem_allocate(struct ocmem *ocmem, enum ocmem_client client,
unsigned long size)
{
- struct ocmem_buf *buf;
int ret;
/* TODO: add support for other clients... */
@@ -229,7 +229,7 @@ struct ocmem_buf *ocmem_allocate(struct ocmem *ocmem, enum ocmem_client client,
if (test_and_set_bit_lock(BIT(client), &ocmem->active_allocations))
return ERR_PTR(-EBUSY);
- buf = kzalloc(sizeof(*buf), GFP_KERNEL);
+ struct ocmem_buf *buf __free(kfree) = kzalloc(sizeof(*buf), GFP_KERNEL);
if (!buf) {
ret = -ENOMEM;
goto err_unlock;
@@ -247,7 +247,7 @@ struct ocmem_buf *ocmem_allocate(struct ocmem *ocmem, enum ocmem_client client,
if (ret) {
dev_err(ocmem->dev, "could not lock: %d\n", ret);
ret = -EINVAL;
- goto err_kfree;
+ goto err_unlock;
}
} else {
ocmem_write(ocmem, OCMEM_REG_GFX_MPU_START, buf->offset);
@@ -258,10 +258,8 @@ struct ocmem_buf *ocmem_allocate(struct ocmem *ocmem, enum ocmem_client client,
dev_dbg(ocmem->dev, "using %ldK of OCMEM at 0x%08lx for client %d\n",
size / 1024, buf->addr, client);
- return buf;
+ return_ptr(buf);
-err_kfree:
- kfree(buf);
err_unlock:
clear_bit_unlock(BIT(client), &ocmem->active_allocations);
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/5] soc: qcom: pdr: simplify with cleanup.h
2024-07-03 9:42 [PATCH 0/5] soc: qcom: simplify with cleanup.h Krzysztof Kozlowski
` (2 preceding siblings ...)
2024-07-03 9:42 ` [PATCH 3/5] soc: qcom: ocmem: " Krzysztof Kozlowski
@ 2024-07-03 9:42 ` Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 5/5] soc: qcom: wcnss: " Krzysztof Kozlowski
2024-07-06 22:01 ` [PATCH 0/5] soc: qcom: " Bjorn Andersson
5 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-03 9:42 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-kernel, Krzysztof Kozlowski
Allocate the memory with scoped/cleanup.h to reduce error handling (less
error paths) and make the code a bit simpler.
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
drivers/soc/qcom/pdr_interface.c | 38 ++++++++++++++------------------------
1 file changed, 14 insertions(+), 24 deletions(-)
diff --git a/drivers/soc/qcom/pdr_interface.c b/drivers/soc/qcom/pdr_interface.c
index 216166e98fae..328b6153b2be 100644
--- a/drivers/soc/qcom/pdr_interface.c
+++ b/drivers/soc/qcom/pdr_interface.c
@@ -3,6 +3,7 @@
* Copyright (C) 2020 The Linux Foundation. All rights reserved.
*/
+#include <linux/cleanup.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
@@ -396,13 +397,13 @@ static int pdr_get_domain_list(struct servreg_get_domain_list_req *req,
static int pdr_locate_service(struct pdr_handle *pdr, struct pdr_service *pds)
{
- struct servreg_get_domain_list_resp *resp;
struct servreg_get_domain_list_req req;
struct servreg_location_entry *entry;
int domains_read = 0;
int ret, i;
- resp = kzalloc(sizeof(*resp), GFP_KERNEL);
+ struct servreg_get_domain_list_resp *resp __free(kfree) = kzalloc(sizeof(*resp),
+ GFP_KERNEL);
if (!resp)
return -ENOMEM;
@@ -415,7 +416,7 @@ static int pdr_locate_service(struct pdr_handle *pdr, struct pdr_service *pds)
req.domain_offset = domains_read;
ret = pdr_get_domain_list(&req, resp, pdr);
if (ret < 0)
- goto out;
+ return ret;
for (i = 0; i < resp->domain_list_len; i++) {
entry = &resp->domain_list[i];
@@ -427,7 +428,7 @@ static int pdr_locate_service(struct pdr_handle *pdr, struct pdr_service *pds)
pds->service_data_valid = entry->service_data_valid;
pds->service_data = entry->service_data;
pds->instance = entry->instance;
- goto out;
+ return 0;
}
}
@@ -440,8 +441,7 @@ static int pdr_locate_service(struct pdr_handle *pdr, struct pdr_service *pds)
domains_read += resp->domain_list_len;
} while (domains_read < resp->total_domains);
-out:
- kfree(resp);
+
return ret;
}
@@ -517,8 +517,7 @@ struct pdr_service *pdr_add_lookup(struct pdr_handle *pdr,
const char *service_name,
const char *service_path)
{
- struct pdr_service *pds, *tmp;
- int ret;
+ struct pdr_service *tmp;
if (IS_ERR_OR_NULL(pdr))
return ERR_PTR(-EINVAL);
@@ -527,7 +526,7 @@ struct pdr_service *pdr_add_lookup(struct pdr_handle *pdr,
!service_path || strlen(service_path) > SERVREG_NAME_LENGTH)
return ERR_PTR(-EINVAL);
- pds = kzalloc(sizeof(*pds), GFP_KERNEL);
+ struct pdr_service *pds __free(kfree) = kzalloc(sizeof(*pds), GFP_KERNEL);
if (!pds)
return ERR_PTR(-ENOMEM);
@@ -542,8 +541,7 @@ struct pdr_service *pdr_add_lookup(struct pdr_handle *pdr,
continue;
mutex_unlock(&pdr->list_lock);
- ret = -EALREADY;
- goto err;
+ return ERR_PTR(-EALREADY);
}
list_add(&pds->node, &pdr->lookups);
@@ -551,10 +549,7 @@ struct pdr_service *pdr_add_lookup(struct pdr_handle *pdr,
schedule_work(&pdr->locator_work);
- return pds;
-err:
- kfree(pds);
- return ERR_PTR(ret);
+ return_ptr(pds);
}
EXPORT_SYMBOL_GPL(pdr_add_lookup);
@@ -651,13 +646,12 @@ struct pdr_handle *pdr_handle_alloc(void (*status)(int state,
char *service_path,
void *priv), void *priv)
{
- struct pdr_handle *pdr;
int ret;
if (!status)
return ERR_PTR(-EINVAL);
- pdr = kzalloc(sizeof(*pdr), GFP_KERNEL);
+ struct pdr_handle *pdr __free(kfree) = kzalloc(sizeof(*pdr), GFP_KERNEL);
if (!pdr)
return ERR_PTR(-ENOMEM);
@@ -676,10 +670,8 @@ struct pdr_handle *pdr_handle_alloc(void (*status)(int state,
INIT_WORK(&pdr->indack_work, pdr_indack_work);
pdr->notifier_wq = create_singlethread_workqueue("pdr_notifier_wq");
- if (!pdr->notifier_wq) {
- ret = -ENOMEM;
- goto free_pdr_handle;
- }
+ if (!pdr->notifier_wq)
+ return ERR_PTR(-ENOMEM);
pdr->indack_wq = alloc_ordered_workqueue("pdr_indack_wq", WQ_HIGHPRI);
if (!pdr->indack_wq) {
@@ -704,7 +696,7 @@ struct pdr_handle *pdr_handle_alloc(void (*status)(int state,
if (ret < 0)
goto release_qmi_handle;
- return pdr;
+ return_ptr(pdr);
release_qmi_handle:
qmi_handle_release(&pdr->locator_hdl);
@@ -712,8 +704,6 @@ struct pdr_handle *pdr_handle_alloc(void (*status)(int state,
destroy_workqueue(pdr->indack_wq);
destroy_notifier:
destroy_workqueue(pdr->notifier_wq);
-free_pdr_handle:
- kfree(pdr);
return ERR_PTR(ret);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/5] soc: qcom: wcnss: simplify with cleanup.h
2024-07-03 9:42 [PATCH 0/5] soc: qcom: simplify with cleanup.h Krzysztof Kozlowski
` (3 preceding siblings ...)
2024-07-03 9:42 ` [PATCH 4/5] soc: qcom: pdr: " Krzysztof Kozlowski
@ 2024-07-03 9:42 ` Krzysztof Kozlowski
2024-07-06 22:01 ` [PATCH 0/5] soc: qcom: " Bjorn Andersson
5 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-03 9:42 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-kernel, Krzysztof Kozlowski
Allocate the memory with scoped/cleanup.h to reduce error handling (less
error paths) and make the code a bit simpler.
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
drivers/soc/qcom/wcnss_ctrl.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/soc/qcom/wcnss_ctrl.c b/drivers/soc/qcom/wcnss_ctrl.c
index 148bcbac332d..62b424e90d90 100644
--- a/drivers/soc/qcom/wcnss_ctrl.c
+++ b/drivers/soc/qcom/wcnss_ctrl.c
@@ -3,6 +3,7 @@
* Copyright (c) 2016, Linaro Ltd.
* Copyright (c) 2015, Sony Mobile Communications Inc.
*/
+#include <linux/cleanup.h>
#include <linux/firmware.h>
#include <linux/module.h>
#include <linux/slab.h>
@@ -198,7 +199,6 @@ static int wcnss_request_version(struct wcnss_ctrl *wcnss)
*/
static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)
{
- struct wcnss_download_nv_req *req;
const struct firmware *fw;
struct device *dev = wcnss->dev;
const char *nvbin = NVBIN_FILE;
@@ -206,18 +206,19 @@ static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)
ssize_t left;
int ret;
- req = kzalloc(sizeof(*req) + NV_FRAGMENT_SIZE, GFP_KERNEL);
+ struct wcnss_download_nv_req *req __free(kfree) = kzalloc(sizeof(*req) + NV_FRAGMENT_SIZE,
+ GFP_KERNEL);
if (!req)
return -ENOMEM;
ret = of_property_read_string(dev->of_node, "firmware-name", &nvbin);
if (ret < 0 && ret != -EINVAL)
- goto free_req;
+ return ret;
ret = request_firmware(&fw, nvbin, dev);
if (ret < 0) {
dev_err(dev, "Failed to load nv file %s: %d\n", nvbin, ret);
- goto free_req;
+ return ret;
}
data = fw->data;
@@ -263,8 +264,6 @@ static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)
release_fw:
release_firmware(fw);
-free_req:
- kfree(req);
return ret;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] soc: qcom: simplify with cleanup.h
2024-07-03 9:42 [PATCH 0/5] soc: qcom: simplify with cleanup.h Krzysztof Kozlowski
` (4 preceding siblings ...)
2024-07-03 9:42 ` [PATCH 5/5] soc: qcom: wcnss: " Krzysztof Kozlowski
@ 2024-07-06 22:01 ` Bjorn Andersson
5 siblings, 0 replies; 7+ messages in thread
From: Bjorn Andersson @ 2024-07-06 22:01 UTC (permalink / raw)
To: Konrad Dybcio, Krzysztof Kozlowski; +Cc: linux-arm-msm, linux-kernel
On Wed, 03 Jul 2024 11:42:35 +0200, Krzysztof Kozlowski wrote:
> Allocate the memory with scoped/cleanup.h to reduce error handling (less
> error paths) and make the code a bit simpler.
>
> Best regards,
> Krzysztof
>
Applied, thanks!
[1/5] soc: qcom: llcc: simplify with cleanup.h
commit: 04e60d7a72b65f8aa45ef04458c818e9c95fe584
[2/5] soc: qcom: mdt_loader: simplify with cleanup.h
commit: 01dd825d2b54edc90394f297830c63047b424da1
[3/5] soc: qcom: ocmem: simplify with cleanup.h
commit: 20635bcc12d5feb1b0005d559cf7cf27743045df
[4/5] soc: qcom: pdr: simplify with cleanup.h
commit: 0ed06fcc7a84ea4861564862545dc7805c0f132e
[5/5] soc: qcom: wcnss: simplify with cleanup.h
commit: b066a2c430f3f8d0aedba44991e0a69e21b512d3
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-07-06 22:01 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-03 9:42 [PATCH 0/5] soc: qcom: simplify with cleanup.h Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 1/5] soc: qcom: llcc: " Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 2/5] soc: qcom: mdt_loader: " Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 3/5] soc: qcom: ocmem: " Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 4/5] soc: qcom: pdr: " Krzysztof Kozlowski
2024-07-03 9:42 ` [PATCH 5/5] soc: qcom: wcnss: " Krzysztof Kozlowski
2024-07-06 22:01 ` [PATCH 0/5] soc: qcom: " Bjorn Andersson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox