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? > > > > >