[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20231126093719.1440305-1-chentao@kylinos.cn>
Date: Sun, 26 Nov 2023 17:37:19 +0800
From: Kunwu Chan <chentao@...inos.cn>
To: mpe@...erman.id.au, npiggin@...il.com, christophe.leroy@...roup.eu,
bgray@...ux.ibm.com, maddy@...ux.vnet.ibm.com,
bigeasy@...utronix.de, hemant@...ux.vnet.ibm.com,
anju@...ux.vnet.ibm.com, kjain@...ux.ibm.com
Cc: linuxppc-dev@...ts.ozlabs.org, linux-kernel@...r.kernel.org,
kunwu.chan@...mail.com, Kunwu Chan <chentao@...inos.cn>
Subject: [PATCH] powerpc/imc-pmu: Fix null pointer dereference in update_events_in_group
kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure.
Fixes: 885dcd709ba9 ("powerpc/perf: Add nest IMC PMU support")
Signed-off-by: Kunwu Chan <chentao@...inos.cn>
---
arch/powerpc/perf/imc-pmu.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c
index 5d12ca386c1f..8664a7d297ad 100644
--- a/arch/powerpc/perf/imc-pmu.c
+++ b/arch/powerpc/perf/imc-pmu.c
@@ -299,6 +299,8 @@ static int update_events_in_group(struct device_node *node, struct imc_pmu *pmu)
attr_group->attrs = attrs;
do {
ev_val_str = kasprintf(GFP_KERNEL, "event=0x%x", pmu->events[i].value);
+ if (!ev_val_str)
+ continue;
dev_str = device_str_attr_create(pmu->events[i].name, ev_val_str);
if (!dev_str)
continue;
@@ -306,6 +308,8 @@ static int update_events_in_group(struct device_node *node, struct imc_pmu *pmu)
attrs[j++] = dev_str;
if (pmu->events[i].scale) {
ev_scale_str = kasprintf(GFP_KERNEL, "%s.scale", pmu->events[i].name);
+ if (!ev_scale_str)
+ continue;
dev_str = device_str_attr_create(ev_scale_str, pmu->events[i].scale);
if (!dev_str)
continue;
@@ -315,6 +319,8 @@ static int update_events_in_group(struct device_node *node, struct imc_pmu *pmu)
if (pmu->events[i].unit) {
ev_unit_str = kasprintf(GFP_KERNEL, "%s.unit", pmu->events[i].name);
+ if (!ev_unit_str)
+ continue;
dev_str = device_str_attr_create(ev_unit_str, pmu->events[i].unit);
if (!dev_str)
continue;
--
2.34.1
Powered by blists - more mailing lists