diff --git a/master/master.c b/master/master.c
index d304ffa43a62af2e4a90e2b24581e227941c6cb1..18a4e8cc907d7ba8950aeb0ff34fca4f45bac32f 100644
--- a/master/master.c
+++ b/master/master.c
@@ -218,6 +218,8 @@ void ec_master_clear(struct kobject *kobj /**< kobject of the master */)
     }
 
     EC_INFO("Master %i cleared.\n", master->index);
+
+    kfree(master);
 }
 
 /*****************************************************************************/
diff --git a/master/slave.c b/master/slave.c
index 0d2a4f338fe2363e4ea91cb0a771d5f1dabea35a..b2a49eefdaa8ab32d9e1842d6aa7e786ace5a67f 100644
--- a/master/slave.c
+++ b/master/slave.c
@@ -234,6 +234,8 @@ void ec_slave_clear(struct kobject *kobj /**< kobject of the slave */)
 
     if (slave->eeprom_data) kfree(slave->eeprom_data);
     if (slave->new_eeprom_data) kfree(slave->new_eeprom_data);
+
+    kfree(slave);
 }
 
 /*****************************************************************************/