diff --git a/drivers/raw/cnxk_gpio/cnxk_gpio.c b/drivers/raw/cnxk_gpio/cnxk_gpio.c index 4ff132861d..9577753851 100644 --- a/drivers/raw/cnxk_gpio/cnxk_gpio.c +++ b/drivers/raw/cnxk_gpio/cnxk_gpio.c @@ -178,24 +178,30 @@ out: static int cnxk_gpio_read_attr(char *attr, char *val) { + int ret, ret2; FILE *fp; - int ret; fp = fopen(attr, "r"); if (!fp) return -errno; ret = fscanf(fp, "%s", val); - if (ret < 0) - return -errno; - if (ret != 1) - return -EIO; + if (ret < 0) { + ret = -errno; + goto out; + } + if (ret != 1) { + ret = -EIO; + goto out; + } - ret = fclose(fp); - if (ret) - return -errno; + ret = 0; +out: + ret2 = fclose(fp); + if (!ret) + ret = ret2; - return 0; + return ret; } static int