From 62615d6cc666eb0e9a88ce46f1e2589a76f8a089 Mon Sep 17 00:00:00 2001 From: Lucjan Bryndza Date: Fri, 18 Dec 2020 09:30:58 +0100 Subject: [PATCH] [EGD-5016] Fix vfs-littlefs failed mount init Fix issue with memory leak during mount in littlefs core when mount fails. --- .../src/purefs/fs/filesystem_littlefs.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/module-vfs/drivers/src/purefs/fs/filesystem_littlefs.cpp b/module-vfs/drivers/src/purefs/fs/filesystem_littlefs.cpp index 2946204d2db05b13f6e234a946039a50eade9394..0f1fccec78b648e82af8f04411ab353ecdc2f7c0 100644 --- a/module-vfs/drivers/src/purefs/fs/filesystem_littlefs.cpp +++ b/module-vfs/drivers/src/purefs/fs/filesystem_littlefs.cpp @@ -229,20 +229,24 @@ namespace purefs::fs::drivers auto ssize = diskmm->get_info(disk, blkdev::info_type::sector_size); if (ssize < 0) { LOG_ERROR("Unable to read sector size %i", int(ssize)); - return ssize; + err = ssize; + } + else { + err = setup_lfs_config(vmnt->lfs_config(), ssize, disk->sectors()); } - err = setup_lfs_config(vmnt->lfs_config(), ssize, disk->sectors()); } - if (err) { - return err; + if (!err) { + err = lfs_mount(vmnt->lfs_mount(), vmnt->lfs_config()); } - err = lfs_mount(vmnt->lfs_mount(), vmnt->lfs_config()); - if (err) { + else { LOG_ERROR("LFS mount error %i", err); } if (!err) { filesystem_operations::mount(mnt); } + else { + littlefs::internal::remove_volume(vmnt->lfs_config()); + } return lfs_to_errno(err); }