Re: [PATCH] platform/mellanox: Add a null pointer check in mlxbf_pmc_create_groups

From: Kunwu Chan
Date: Thu Nov 30 2023 - 22:21:14 EST


Hi Vadim,
Thanks for your reply.

I will follw your suggestions and add some ‘fixes’ label in v2 patch.

Thanks again,
Kunwu


On 2023/12/1 00:01, Vadim Pasternak wrote:
Hi Ilpo!

-----Original Message-----
From: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
Sent: Thursday, 30 November 2023 17:26
To: Kunwu Chan <chentao@xxxxxxxxxx>; Vadim Pasternak
<vadimp@xxxxxxxxxx>
Cc: Hans de Goede <hdegoede@xxxxxxxxxx>; jiri@xxxxxxxxxxx; Shravan
Ramani <shravankr@xxxxxxxxxx>; kunwu.chan@xxxxxxxxxxx; platform-
driver-x86@xxxxxxxxxxxxxxx; LKML <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH] platform/mellanox: Add a null pointer check in
mlxbf_pmc_create_groups

Hi Vadim,

Could you please take a look at this and give advice to Kunwu so we can get all
of them squashed in one go.

It seems there are six calls devm_kasprintf(), which requires checking pointer.

I guess, it is correct to return '-ENOMEM' for any failure.

I see there is another problem in mlxbf_pmc_probe() - it lacks error flow for:
pmc->hwmon_dev = devm_hwmon_device_register_with_groups(
dev, "bfperf", pmc, pmc->groups);

Need to add:
if (IS_ERR(pmc->hwmon_dev))
return PTR_ERR(pmc->hwmon_dev);

Sharvan, David,
Could you, please, have look?


On Thu, 30 Nov 2023, Kunwu Chan wrote:

Thanks for your reply.

Cause i don't know how to deal with in some scenario,such as in
'mlxbf_pmc_init_perftype_counter', when 'attr->dev_attr.attr.name' is
null, should return '-ENOMEM' or 'continue' the loop?

I'd have thought returning -ENOMEM would be safe because it just ends up
failing probe()? ...And it's not that likely to occur in the first place.

--
i.


So I'm going to solve it one by one.

Thanks again,
Kunwu

On 2023/11/28 17:51, Ilpo Järvinen wrote:
On Mon, 27 Nov 2023, Kunwu Chan wrote:

devm_kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure.

Fixes: 1a218d312e65 ("platform/mellanox: mlxbf-pmc: Add Mellanox
BlueField PMC driver")
Signed-off-by: Kunwu Chan <chentao@xxxxxxxxxx>
---
drivers/platform/mellanox/mlxbf-pmc.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/platform/mellanox/mlxbf-pmc.c
b/drivers/platform/mellanox/mlxbf-pmc.c
index 0b427fc24a96..59bbe5e13f6b 100644
--- a/drivers/platform/mellanox/mlxbf-pmc.c
+++ b/drivers/platform/mellanox/mlxbf-pmc.c
@@ -1882,6 +1882,8 @@ static int mlxbf_pmc_create_groups(struct
device *dev, int blk_num)
pmc->block[blk_num].block_attr_grp.attrs =
pmc->block[blk_num].block_attr;
pmc->block[blk_num].block_attr_grp.name = devm_kasprintf(
dev, GFP_KERNEL, pmc->block_name[blk_num]);
+ if (!pmc->block[blk_num].block_attr_grp.name)
+ return -ENOMEM;
pmc->groups[pmc->group_num] = &pmc-
block[blk_num].block_attr_grp;
pmc->group_num++;

I'm totally lost, why did you fix only one devm_kasprintf() location?
Don't all of them need this check?