diff --git a/arch/arm/src/stm32/stm32_i2c_v2.c b/arch/arm/src/stm32/stm32_i2c_v2.c index 22073d9f6f..e17b537849 100644 --- a/arch/arm/src/stm32/stm32_i2c_v2.c +++ b/arch/arm/src/stm32/stm32_i2c_v2.c @@ -2804,6 +2804,7 @@ int stm32_i2cbus_uninitialize(struct i2c_master_s *dev) if (--priv->refs) { nxmutex_unlock(&priv->lock); + kmm_free(dev); return OK; } diff --git a/arch/arm/src/stm32f0l0g0/stm32_i2c.c b/arch/arm/src/stm32f0l0g0/stm32_i2c.c index 362cf0de5d..4f34ed1c99 100644 --- a/arch/arm/src/stm32f0l0g0/stm32_i2c.c +++ b/arch/arm/src/stm32f0l0g0/stm32_i2c.c @@ -2803,6 +2803,7 @@ int stm32_i2cbus_uninitialize(struct i2c_master_s *dev) if (--priv->refs) { nxmutex_unlock(&priv->lock); + kmm_free(dev); return OK; } diff --git a/arch/arm/src/stm32f7/stm32_i2c.c b/arch/arm/src/stm32f7/stm32_i2c.c index cce760ec80..6a629f6da8 100644 --- a/arch/arm/src/stm32f7/stm32_i2c.c +++ b/arch/arm/src/stm32f7/stm32_i2c.c @@ -2842,6 +2842,7 @@ int stm32_i2cbus_uninitialize(struct i2c_master_s *dev) if (--priv->refs) { nxmutex_unlock(&priv->lock); + kmm_free(dev); return OK; } diff --git a/arch/arm/src/stm32h7/stm32_i2c.c b/arch/arm/src/stm32h7/stm32_i2c.c index 5d2edf9148..87736a2a4a 100644 --- a/arch/arm/src/stm32h7/stm32_i2c.c +++ b/arch/arm/src/stm32h7/stm32_i2c.c @@ -2805,6 +2805,7 @@ int stm32_i2cbus_uninitialize(struct i2c_master_s *dev) if (--priv->refs) { nxmutex_unlock(&priv->lock); + kmm_free(dev); return OK; } diff --git a/arch/arm/src/stm32l4/stm32l4_1wire.c b/arch/arm/src/stm32l4/stm32l4_1wire.c index 0078ee3e6b..593eb86478 100644 --- a/arch/arm/src/stm32l4/stm32l4_1wire.c +++ b/arch/arm/src/stm32l4/stm32l4_1wire.c @@ -1247,6 +1247,7 @@ int stm32l4_1wireuninitialize(struct onewire_dev_s *dev) if (--priv->refs) { nxmutex_unlock(&priv->lock); + kmm_free(priv); return OK; } diff --git a/arch/arm/src/stm32l4/stm32l4_i2c.c b/arch/arm/src/stm32l4/stm32l4_i2c.c index 216fe28da1..7a2ed68dc0 100644 --- a/arch/arm/src/stm32l4/stm32l4_i2c.c +++ b/arch/arm/src/stm32l4/stm32l4_i2c.c @@ -3007,6 +3007,7 @@ int stm32l4_i2cbus_uninitialize(struct i2c_master_s *dev) if (--priv->refs) { nxmutex_unlock(&priv->lock); + kmm_free(dev); return OK; }