fsck: fix racing between unlock/unlink and open

Process A	Process B	Process C
open()
[creates file]
lock()
[succeed]
		open()
		[open existing]
		lock()...
running()
close()
		[...succeed]
unlink()
		running()
				open()
				[creates file] {BAD!}
				lock()
				[succeed] {BAD!}
				running() {BAD!}
		close()

Cons: leaves empty (unlocked/harmless) .lock files in /run/fsck/
Signed-off-by: Yuriy M. Kaminskiy <yumkam@gmail.com>
This commit is contained in:
Yuriy M. Kaminskiy 2016-04-08 00:38:56 +03:00 committed by Karel Zak
parent 854d0fef7f
commit fc75981a22
1 changed files with 0 additions and 1 deletions

View File

@ -410,7 +410,6 @@ static void unlock_disk(struct fsck_instance *inst)
printf(_("Unlocking %s.\n"), inst->lockpath);
close(inst->lock); /* unlock */
unlink(inst->lockpath);
free(inst->lockpath);