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:
parent
854d0fef7f
commit
fc75981a22
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue