You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ag...@apache.org on 2021/05/14 19:21:40 UTC
[mynewt-core] branch master updated: hw: battery: Check return code
from adc_chan_config
This is an automated email from the ASF dual-hosted git repository.
agross pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
The following commit(s) were added to refs/heads/master by this push:
new 3c2cfdb hw: battery: Check return code from adc_chan_config
new 6215ec7 Merge pull request #2589 from agross-korg/fws-1033
3c2cfdb is described below
commit 3c2cfdb45cfbfcda7b1facce5cb8543a4909a7fc
Author: Andy Gross <an...@juul.com>
AuthorDate: Mon May 10 14:27:50 2021 -0500
hw: battery: Check return code from adc_chan_config
This patch fixes an unchecked return value when invoking the adc_chan_config
call. This issue was found as part of a static analysis tool. Fixed all
instances using this API that were not checking return value.
Signed-off-by: Andy Gross <an...@juul.com>
---
hw/battery/src/battery_adc.c | 7 +++++--
hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c | 5 ++++-
hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c | 5 ++++-
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/hw/battery/src/battery_adc.c b/hw/battery/src/battery_adc.c
index 733ad45..d26a35e 100644
--- a/hw/battery/src/battery_adc.c
+++ b/hw/battery/src/battery_adc.c
@@ -118,8 +118,11 @@ battery_adc_open(struct os_dev *dev, uint32_t timeout, void *arg)
(char *)bat_adc->cfg.adc_dev_name, timeout, bat_adc->cfg.adc_open_arg);
if (bat_adc->adc_dev) {
/* Setup channel configuration to use for battery voltage */
- adc_chan_config(bat_adc->adc_dev, bat_adc->cfg.channel,
- bat_adc->cfg.adc_channel_cfg);
+ rc = adc_chan_config(bat_adc->adc_dev, bat_adc->cfg.channel,
+ bat_adc->cfg.adc_channel_cfg);
+ if (rc) {
+ return rc;
+ }
/* Additional GPIO needed before measurement ? */
if (bat_adc->cfg.activation_pin_needed &&
diff --git a/hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c b/hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c
index bffaa61..b404fe2 100644
--- a/hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c
+++ b/hw/drivers/adc/gpadc_da1469x/src/gpadc_da1469x.c
@@ -682,7 +682,10 @@ da1469x_open_battery_adc(const char *dev_name, uint32_t wait)
if (adc) {
/* call adc_chan_config to setup correct multiplier so read returns
* value in mV */
- adc_chan_config((struct adc_dev *)adc, 0, NULL);
+ if (adc_chan_config((struct adc_dev *)adc, 0, NULL)) {
+ os_dev_close(adc);
+ adc = NULL;
+ }
}
return adc;
}
diff --git a/hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c b/hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c
index a2b3c33..6d890e7 100644
--- a/hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c
+++ b/hw/drivers/adc/sdadc_da1469x/src/sdadc_da1469x.c
@@ -471,7 +471,10 @@ da1469x_open_battery_adc(const char *dev_name, uint32_t wait)
if (adc) {
/* call adc_chan_config to setup correct multiplier so read returns
* value in mV */
- adc_chan_config((struct adc_dev *)adc, 0, NULL);
+ if (adc_chan_config((struct adc_dev *)adc, 0, NULL)) {
+ os_dev_close(adc);
+ adc = NULL;
+ }
}
return adc;
}