summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormichaelolbrich <m.olbrich@pengutronix.de>2016-06-06 21:59:51 +0200
committerLennart Poettering <lennart@poettering.net>2016-06-06 21:59:51 +0200
commit53203e5f8f9a79d0ad774e29ea165b471e64619f (patch)
tree94e5576db6c1f86ad769dcf183526300aab9e382 /src
parentb2bb19bbda8f5ab3ab497165bc52a0ef952348c4 (diff)
mount: make sure got into MOUNT_DEAD state after a successful umount (#3444)
Without this code the following can happen: 1. Open a file to keep a mount busy 2. Try to stop the corresponding mount unit with systemctl -> umount fails and the failure is remembered in mount->result 3. Close the file and umount the filesystem manually -> mount_dispatch_io() calls "mount_enter_dead(mount, MOUNT_SUCCESS)" -> Old error in mount->result is reused and the mount unit enters a failed state Clear the old error result when 'mountinfo' reports a successful umount to fix this.
Diffstat (limited to 'src')
-rw-r--r--src/core/mount.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/core/mount.c b/src/core/mount.c
index 665a60bb55..8290ac859d 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -1706,6 +1706,7 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
/* This has just been unmounted by
* somebody else, follow the state
* change. */
+ mount->result = MOUNT_SUCCESS;
mount_enter_dead(mount, MOUNT_SUCCESS);
break;