From cf49c8676ca4eeceaadd2970ff5c288ff68f4f9e Mon Sep 17 00:00:00 2001 From: Robert Lubos Date: Fri, 29 Oct 2021 13:45:13 +0200 Subject: [PATCH] drivers: ieee802154_cc2520: Fix unchecked return value coverity issue Verify the return value of `gpio_add_callback()` calls. CID: 240700 Fixes #39806 Signed-off-by: Robert Lubos --- drivers/ieee802154/ieee802154_cc2520.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/ieee802154/ieee802154_cc2520.c b/drivers/ieee802154/ieee802154_cc2520.c index 4537874f32c..06a2630b3c7 100644 --- a/drivers/ieee802154/ieee802154_cc2520.c +++ b/drivers/ieee802154/ieee802154_cc2520.c @@ -429,16 +429,23 @@ static void enable_sfd_interrupt(const struct device *dev, gpio_pin_interrupt_configure_dt(&cfg->sfd, mode); } -static inline void setup_gpio_callbacks(const struct device *dev) +static inline int setup_gpio_callbacks(const struct device *dev) { const struct cc2520_config *cfg = dev->config; struct cc2520_context *cc2520 = dev->data; gpio_init_callback(&cc2520->sfd_cb, sfd_int_handler, BIT(cfg->sfd.pin)); - gpio_add_callback(cfg->sfd.port, &cc2520->sfd_cb); + if (gpio_add_callback(cfg->sfd.port, &cc2520->sfd_cb) != 0) { + return -EIO; + } + gpio_init_callback(&cc2520->fifop_cb, fifop_int_handler, BIT(cfg->fifop.pin)); - gpio_add_callback(cfg->fifop.port, &cc2520->fifop_cb); + if (gpio_add_callback(cfg->fifop.port, &cc2520->fifop_cb) != 0) { + return -EIO; + } + + return 0; } @@ -931,7 +938,9 @@ static int power_on_and_setup(const struct device *dev) /* Cleaning up TX fifo */ instruct_sflushtx(dev); - setup_gpio_callbacks(dev); + if (setup_gpio_callbacks(dev) != 0) { + return -EIO; + } cc2520_print_gpio_config(dev);