From f472041ce20d0b43042b79780eebd71abf379fad Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sun, 1 Feb 2015 08:20:30 -0600 Subject: [PATCH] RAM disk: Missed a few changes in the last commit --- drivers/ramdisk.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/ramdisk.c b/drivers/ramdisk.c index 4c9a1405d57..2ccecc7c96e 100644 --- a/drivers/ramdisk.c +++ b/drivers/ramdisk.c @@ -142,13 +142,22 @@ static const struct block_operations g_bops = static void rd_destroy(FAR struct rd_struct_s *dev) { - /* And free the dev structure. - * REVISIT: This is not very helpful. What we really need to know - * is if we can free the RAM disk memory; that is the major resource - * consumed by this driver. But we do not know if we can or should. - */ + fvdbg("Destroying RAM disk\n"); - kmm_free(dev); + /* We we configured to free the RAM disk memory when unlinked? */ + +#ifdef CONFIG_FS_WRITABLE + if (RDFLAG_IS_UNLINKED(dev->rd_flags)) + { + /* Yes.. do it */ + + kmm_free(dev->rd_buffer); + } +#endif + + /* And free the block driver itself */ + + kmm_free(dev); } /****************************************************************************