Merge branch 'winfio'
[fio.git] / fio.c
diff --git a/fio.c b/fio.c
index a85f577624ab7912b9893ba83dc383ef0fd53022..9c556705f124d1365afca2aac2e3712b61a1a2c7 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -1070,14 +1070,18 @@ static void *thread_main(void *data)
         */
        fio_mutex_remove(td->mutex);
 
-       if (td->o.uid != -1U && setuid(td->o.uid)) {
-               td_verror(td, errno, "setuid");
-               goto err;
-       }
+       /*
+        * A new gid requires privilege, so we need to do this before setting
+        * the uid.
+        */
        if (td->o.gid != -1U && setgid(td->o.gid)) {
                td_verror(td, errno, "setgid");
                goto err;
        }
+       if (td->o.uid != -1U && setuid(td->o.uid)) {
+               td_verror(td, errno, "setuid");
+               goto err;
+       }
 
        /*
         * May alter parameters that init_io_u() will use, so we need to