From 31d271a5a87b22988c7bd145ac5fed6882f9255b Mon Sep 17 00:00:00 2001 From: netblue30 Date: Sun, 9 Oct 2016 11:29:02 -0400 Subject: appimage umount fix --- src/firejail/appimage.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/firejail/appimage.c b/src/firejail/appimage.c index d654e51fc..375d6be24 100644 --- a/src/firejail/appimage.c +++ b/src/firejail/appimage.c @@ -126,16 +126,32 @@ void appimage_set(const char *appimage_path) { void appimage_clear(void) { int rv; + EUID_ROOT(); if (mntdir) { - rv = umount2(mntdir, MNT_FORCE); - if (rv == -1 && errno == EBUSY) { - sleep(5); + int i; + int rv = 0; + for (i = 0; i < 5; i++) { rv = umount2(mntdir, MNT_FORCE); - (void) rv; + if (rv == 0) + break; + if (rv == -1 && errno == EBUSY) { + if (!arg_quiet) + printf("Warning: EBUSY error trying to unmount %s\n", mntdir); + sleep(2); + continue; + } + // rv = -1 + if (!arg_quiet) { + printf("Warning: error trying to unmount %s\n", mntdir); + perror("umount"); + } + } + + if (rv == 0) { + rmdir(mntdir); + free(mntdir); } - rmdir(mntdir); - free(mntdir); } if (devloop) { -- cgit v1.2.3-54-g00ecf