Skip to content

Commit efd49b8

Browse files
javiercarrascocruzgroeck
authored andcommitted
hwmon: (chipcap2) fix return path in cc2_request_alarm_irqs()
The return path can be improved by returning upon first failure. The current implementation would try to register the second interrupt even if the first one failed, which is unnecessary. Moreover, if no irqs are available, the return value should be zero (the driver supports the use case with no interrupts). Currently the initial value is unassigned and that may lead to returning an unknown value if stack variables are not automatically set to zero and no irqs were provided. Reported-by: Dan Carpenter <[email protected]> Closes: https://lore.kernel.org/linux-hwmon/[email protected]/T/#t Signed-off-by: Javier Carrasco <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Guenter Roeck <[email protected]>
1 parent f16fb6d commit efd49b8

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

drivers/hwmon/chipcap2.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ static int cc2_request_ready_irq(struct cc2_data *data, struct device *dev)
670670

671671
static int cc2_request_alarm_irqs(struct cc2_data *data, struct device *dev)
672672
{
673-
int ret;
673+
int ret = 0;
674674

675675
data->irq_low = fwnode_irq_get_byname(dev_fwnode(dev), "low");
676676
if (data->irq_low > 0) {
@@ -679,8 +679,10 @@ static int cc2_request_alarm_irqs(struct cc2_data *data, struct device *dev)
679679
IRQF_ONESHOT |
680680
IRQF_TRIGGER_RISING,
681681
dev_name(dev), data);
682-
if (!ret)
683-
data->rh_alarm.low_alarm_visible = true;
682+
if (ret)
683+
return ret;
684+
685+
data->rh_alarm.low_alarm_visible = true;
684686
}
685687

686688
data->irq_high = fwnode_irq_get_byname(dev_fwnode(dev), "high");
@@ -690,8 +692,10 @@ static int cc2_request_alarm_irqs(struct cc2_data *data, struct device *dev)
690692
IRQF_ONESHOT |
691693
IRQF_TRIGGER_RISING,
692694
dev_name(dev), data);
693-
if (!ret)
694-
data->rh_alarm.high_alarm_visible = true;
695+
if (ret)
696+
return ret;
697+
698+
data->rh_alarm.high_alarm_visible = true;
695699
}
696700

697701
return ret;

0 commit comments

Comments
 (0)