On Sun, Apr 07, 2024 at 10:01:49PM +0200, Christophe JAILLET wrote:
diff --git a/drivers/thermal/mediatek/lvts_thermal.c b/drivers/thermal/mediatek/lvts_thermal.c
index 3003dc350766..b133f731c5ba 100644
--- a/drivers/thermal/mediatek/lvts_thermal.c
+++ b/drivers/thermal/mediatek/lvts_thermal.c
@@ -204,7 +204,7 @@ static const struct debugfs_reg32 lvts_regs[] = {
static int lvts_debugfs_init(struct device *dev, struct lvts_domain *lvts_td)
{
- struct debugfs_regset32 *regset;
+ struct debugfs_regset32 *regsets;
struct lvts_ctrl *lvts_ctrl;
struct dentry *dentry;
char name[64];
@@ -214,8 +214,14 @@ static int lvts_debugfs_init(struct device *dev, struct lvts_domain *lvts_td)
if (IS_ERR(lvts_td->dom_dentry))
return 0;
+ regsets = devm_kcalloc(dev, lvts_td->num_lvts_ctrl,
+ sizeof(*regsets), GFP_KERNEL);
+ if (!regsets)
+ return 0;
I understand that this preserved the behavior from the original code,
but the original code was wrong. This should return -ENOMEM.
+
for (i = 0; i < lvts_td->num_lvts_ctrl; i++) {
+ struct debugfs_regset32 *regset = ®sets[i];
lvts_ctrl = &lvts_td->lvts_ctrl[i];
The blank line should come after the declaration.
regards,
dan carpenter