diff --git a/arch/arm/src/cxd56xx/cxd56_geofence.c b/arch/arm/src/cxd56xx/cxd56_geofence.c index 00c83f8a9e6..f5b5bb7592c 100644 --- a/arch/arm/src/cxd56xx/cxd56_geofence.c +++ b/arch/arm/src/cxd56xx/cxd56_geofence.c @@ -673,6 +673,7 @@ err1: unregister_driver(devpath); err0: + nxmutex_destroy(&priv->devlock); kmm_free(priv); return ret; } diff --git a/arch/arm/src/cxd56xx/cxd56_gnss.c b/arch/arm/src/cxd56xx/cxd56_gnss.c index 84082d48213..3b110356132 100644 --- a/arch/arm/src/cxd56xx/cxd56_gnss.c +++ b/arch/arm/src/cxd56xx/cxd56_gnss.c @@ -3175,6 +3175,9 @@ err1: unregister_driver(devpath); err0: + nxmutex_destroy(&priv->ioctllock); + nxsem_destroy(&priv->apiwait); + nxmutex_destroy(&priv->devlock); kmm_free(priv); return ret; } diff --git a/arch/arm/src/lc823450/lc823450_adc.c b/arch/arm/src/lc823450/lc823450_adc.c index 4751aa8cb8a..76d82333ce3 100644 --- a/arch/arm/src/lc823450/lc823450_adc.c +++ b/arch/arm/src/lc823450/lc823450_adc.c @@ -514,7 +514,9 @@ struct adc_dev_s *lc823450_adcinitialize(void) if (ret < 0) { aerr("adc_register failed: %d\n", ret); - kmm_free(g_inst); + nxmutex_destroy(&inst->lock); + nxsem_destroy(&inst->sem_isr); + kmm_free(inst); return NULL; } @@ -541,12 +543,13 @@ struct adc_dev_s *lc823450_adcinitialize(void) /* Register the ADC driver at "/dev/adc0" */ ret = adc_register("/dev/adc0", &inst->dev); - if (ret < 0) { aerr("adc_register failed: %d\n", ret); nxmutex_unlock(&inst->lock); - kmm_free(g_inst); + nxmutex_destroy(&inst->lock); + nxsem_destroy(&inst->sem_isr); + kmm_free(inst); return NULL; } diff --git a/arch/arm/src/rp2040/rp2040_i2s.c b/arch/arm/src/rp2040/rp2040_i2s.c index b92b199202d..e88097e9f93 100644 --- a/arch/arm/src/rp2040/rp2040_i2s.c +++ b/arch/arm/src/rp2040/rp2040_i2s.c @@ -1333,6 +1333,7 @@ struct i2s_dev_s *rp2040_i2sbus_initialize(int port) errout_with_alloc: nxmutex_destroy(&priv->lock); + nxsem_destroy(&priv->bufsem); kmm_free(priv); return NULL; } diff --git a/arch/arm/src/sama5/sam_ssc.c b/arch/arm/src/sama5/sam_ssc.c index 67729c568ca..5277a116192 100644 --- a/arch/arm/src/sama5/sam_ssc.c +++ b/arch/arm/src/sama5/sam_ssc.c @@ -3422,6 +3422,7 @@ errout_with_clocking: errout_with_alloc: nxmutex_destroy(&priv->lock); + nxsem_destroy(&priv->bufsem); kmm_free(priv); return NULL; } diff --git a/arch/arm/src/samv7/sam_ssc.c b/arch/arm/src/samv7/sam_ssc.c index 43e6ced60c2..071be7bc337 100644 --- a/arch/arm/src/samv7/sam_ssc.c +++ b/arch/arm/src/samv7/sam_ssc.c @@ -3404,6 +3404,7 @@ errout_with_clocking: errout_with_alloc: nxmutex_destroy(&priv->lock); + nxsem_destroy(&priv->bufsem); kmm_free(priv); return NULL; } diff --git a/arch/arm/src/stm32/stm32_i2s.c b/arch/arm/src/stm32/stm32_i2s.c index d078669741b..c9dadf6bc23 100644 --- a/arch/arm/src/stm32/stm32_i2s.c +++ b/arch/arm/src/stm32/stm32_i2s.c @@ -2600,6 +2600,7 @@ struct i2s_dev_s *stm32_i2sbus_initialize(int port) errout_with_alloc: leave_critical_section(flags); nxmutex_destroy(&priv->lock); + nxsem_destroy(&priv->bufsem); kmm_free(priv); return NULL; } diff --git a/boards/arm/stm32/mikroe-stm32f4/src/stm32_touchscreen.c b/boards/arm/stm32/mikroe-stm32f4/src/stm32_touchscreen.c index 25f90b6bbb2..5e3725e7edb 100644 --- a/boards/arm/stm32/mikroe-stm32f4/src/stm32_touchscreen.c +++ b/boards/arm/stm32/mikroe-stm32f4/src/stm32_touchscreen.c @@ -1539,6 +1539,7 @@ int stm32_tsc_setup(int minor) errout_with_priv: nxmutex_destroy(&priv->devlock); + nxsem_destroy(&priv->waitsem); #ifdef CONFIG_TOUCHSCREEN_MULTIPLE kmm_free(priv); #endif diff --git a/boards/mips/pic32mx/pic32mx7mmb/src/pic32_touchscreen.c b/boards/mips/pic32mx/pic32mx7mmb/src/pic32_touchscreen.c index 8f1ab3f7f74..7684c58e574 100644 --- a/boards/mips/pic32mx/pic32mx7mmb/src/pic32_touchscreen.c +++ b/boards/mips/pic32mx/pic32mx7mmb/src/pic32_touchscreen.c @@ -1399,6 +1399,7 @@ int pic32mx_tsc_setup(int minor) errout_with_priv: nxmutex_destroy(&priv->devlock); + nxsem_destroy(&priv->waitsem); #ifdef CONFIG_TOUCHSCREEN_MULTIPLE kmm_free(priv); #endif