Message ID | 1686884364-31447-1-git-send-email-cy_huang@richtek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | regulator: tps65219: Fix pointer assignment in tps65219_get_rdev_by_name() | expand |
On Fri, Jun 16, 2023 at 10:59:24AM +0800, cy_huang@richtek.com wrote: > From: ChiYuan Huang <cy_huang@richtek.com> > > For the pointer assignment in function body, double pointer must be used as > the input parameter. > > Fixes: c12ac5fc3e0a ("regulator: drivers: Add TI TPS65219 PMIC regulators support") > Signed-off-by: ChiYuan Huang <cy_huang@richtek.com> Please ignore it. Krzysztof's patch already fix it and applied. https://lore.kernel.org/lkml/20230507144656.192800-1-krzysztof.kozlowski@linaro.org/ > --- > Hi, > > I try to fix W=1 build warning for tps65219-regulator. > > W=1 > warning: parameter ‘dev’ set but not used [-Wunused-but-set-parameter] > struct regulator_dev *dev) > ^~~~~ > But the issue is not what the warning message described. > > In tps65219_get_rdev_by_name(), it must return the found rdev and assign it > in 'dev' pointer. Due to pointer assignment issue, it doesn't. > > The original code may not cause any problem. But it always takes the last > registered regulator rdev for all tps65219 regulator interrupts. > --- > drivers/regulator/tps65219-regulator.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/regulator/tps65219-regulator.c b/drivers/regulator/tps65219-regulator.c > index b1719ee990ab..8971b507a79a 100644 > --- a/drivers/regulator/tps65219-regulator.c > +++ b/drivers/regulator/tps65219-regulator.c > @@ -289,13 +289,13 @@ static irqreturn_t tps65219_regulator_irq_handler(int irq, void *data) > > static int tps65219_get_rdev_by_name(const char *regulator_name, > struct regulator_dev *rdevtbl[7], > - struct regulator_dev *dev) > + struct regulator_dev **dev) > { > int i; > > for (i = 0; i < ARRAY_SIZE(regulators); i++) { > if (strcmp(regulator_name, regulators[i].name) == 0) { > - dev = rdevtbl[i]; > + *dev = rdevtbl[i]; > return 0; > } > } > @@ -348,7 +348,7 @@ static int tps65219_regulator_probe(struct platform_device *pdev) > irq_data[i].dev = tps->dev; > irq_data[i].type = irq_type; > > - tps65219_get_rdev_by_name(irq_type->regulator_name, rdevtbl, rdev); > + tps65219_get_rdev_by_name(irq_type->regulator_name, rdevtbl, &rdev); > if (IS_ERR(rdev)) { > dev_err(tps->dev, "Failed to get rdev for %s\n", > irq_type->regulator_name); > -- > 2.40.1 >
diff --git a/drivers/regulator/tps65219-regulator.c b/drivers/regulator/tps65219-regulator.c index b1719ee990ab..8971b507a79a 100644 --- a/drivers/regulator/tps65219-regulator.c +++ b/drivers/regulator/tps65219-regulator.c @@ -289,13 +289,13 @@ static irqreturn_t tps65219_regulator_irq_handler(int irq, void *data) static int tps65219_get_rdev_by_name(const char *regulator_name, struct regulator_dev *rdevtbl[7], - struct regulator_dev *dev) + struct regulator_dev **dev) { int i; for (i = 0; i < ARRAY_SIZE(regulators); i++) { if (strcmp(regulator_name, regulators[i].name) == 0) { - dev = rdevtbl[i]; + *dev = rdevtbl[i]; return 0; } } @@ -348,7 +348,7 @@ static int tps65219_regulator_probe(struct platform_device *pdev) irq_data[i].dev = tps->dev; irq_data[i].type = irq_type; - tps65219_get_rdev_by_name(irq_type->regulator_name, rdevtbl, rdev); + tps65219_get_rdev_by_name(irq_type->regulator_name, rdevtbl, &rdev); if (IS_ERR(rdev)) { dev_err(tps->dev, "Failed to get rdev for %s\n", irq_type->regulator_name);