From 14e470be81ad5ba79b74f9ccd54bcbdcf15622c5 Mon Sep 17 00:00:00 2001 From: Thomas Veerman Date: Wed, 14 Nov 2012 13:24:53 +0000 Subject: [PATCH] VFS: fix TOCTOU bug in sync --- servers/vfs/misc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/servers/vfs/misc.c b/servers/vfs/misc.c index f32ec88e2..cd7319f46 100644 --- a/servers/vfs/misc.c +++ b/servers/vfs/misc.c @@ -299,13 +299,13 @@ int do_sync() int r = OK; for (vmp = &vmnt[0]; vmp < &vmnt[NR_MNTS]; ++vmp) { + if ((r = lock_vmnt(vmp, VMNT_EXCL)) != OK) + break; if (vmp->m_dev != NO_DEV && vmp->m_fs_e != NONE && vmp->m_root_node != NULL) { - if ((r = lock_vmnt(vmp, VMNT_EXCL)) != OK) - break; req_sync(vmp->m_fs_e); - unlock_vmnt(vmp); } + unlock_vmnt(vmp); } return(r);