From nobody Sat Feb 7 09:20:05 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) client-ip=205.139.110.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1592318423; cv=none; d=zohomail.com; s=zohoarc; b=cgbKH70nWaMOMF0sTSQd4gOagbh2bJlctyAdAS7zTeJhoFnwPzBbC7aE/QB4y6NJNbzrLmYnb7044onFIJw9BXucXmL9CkVVZxNegYQOztcbmiV/bZq5c93Ag4zrtZKh7B9VnUjyUCiG4Ne9Shx7XV8ujCSg9zAs5G19nLSj6IY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592318423; h=Content-Type:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=/PBtmfGitrnOdAemtZn4wo+1u/cX1tDrWQgv/mKRMbI=; b=X+EJIZ6xVZBQFUDp0qadevjol7BA0c3+Nd+PmLEznjEqzXdvc38wn1DtT8nwZvRt3ZazBcRfcoA+AM82X+8EEz6kzFPNAYRHSROk5mnTaQpUFVRE/gvbqaD6R1R18MSUWSZrDhka2+yC5dw2CUgoBVK4wHed/VO33APwwltFlvg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1592318423467467.8634075700577; Tue, 16 Jun 2020 07:40:23 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-268-_DxXKYYGPTSPmv0s0GHiTg-1; Tue, 16 Jun 2020 10:40:16 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 745EE101848D; Tue, 16 Jun 2020 14:40:09 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 17F4979311; Tue, 16 Jun 2020 14:40:08 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 875341809547; Tue, 16 Jun 2020 14:40:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05GEe47k021585 for ; Tue, 16 Jun 2020 10:40:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id C1B96AFD40; Tue, 16 Jun 2020 14:40:04 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BD066AF987 for ; Tue, 16 Jun 2020 14:40:02 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C3AE5856A2B for ; Tue, 16 Jun 2020 14:40:02 +0000 (UTC) Received: from huawei.com (szxga05-in.huawei.com [45.249.212.191]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-116-iUiFu3a0O0evE-h8v7gJKg-1; Tue, 16 Jun 2020 10:39:58 -0400 Received: from DGGEMS401-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 8DA967FFA566EE1028F8 for ; Tue, 16 Jun 2020 22:39:52 +0800 (CST) Received: from [10.173.222.155] (10.173.222.155) by DGGEMS401-HUB.china.huawei.com (10.3.19.201) with Microsoft SMTP Server id 14.3.487.0; Tue, 16 Jun 2020 22:39:46 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592318421; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=/PBtmfGitrnOdAemtZn4wo+1u/cX1tDrWQgv/mKRMbI=; b=Tc+2q6Yrq4bGwRnCfVVjUHuulkeFS/BzM+aw2kWpyoMFhTYgamtif1IbexvxG6Pb8KEZ0P V6TmQoOudhUBeM3a/ph3DYU72KP+TobTgORPbHkbHgpd3ZkC9SDfdmoKujw7bDP2z7CmUW O8FTjelyFDVwdKT7aUIuQipM1aXQi8c= X-MC-Unique: _DxXKYYGPTSPmv0s0GHiTg-1 X-MC-Unique: iUiFu3a0O0evE-h8v7gJKg-1 To: , , , , From: Bihong Yu Subject: [libvirt PATCH] utils: add mutex to avoid races in virfile Message-ID: <4f446329-5bb0-5502-26a1-361000cc35ab@huawei.com> Date: Tue, 16 Jun 2020 22:39:46 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 Content-Language: en-US X-Originating-IP: [10.173.222.155] X-CFilter-Loop: Reflected X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------C8AC28245F681CD30AB7C431" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @redhat.com) --------------C8AC28245F681CD30AB7C431 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 >From d9f7ed2af581222804392f9b93dc6aaf7d8c8995 Mon Sep 17 00:00:00 2001 From: Bihong Yu Date: Tue, 16 Jun 2020 22:08:55 +0800 Subject: [PATCH] utils: add mutex to avoid races in virfile There are races condiction to make '/run/libvirt/qemu/dbus' directory in virDirCreateNoFork() while concurrent start VMs, and get "failed to create directory '/run/libvirt/qemu/dbus': File exists" error message. Add an mutex to avoid races. Signed-off-by:Bihong Yu Reviewed-by:Chuan Zheng Reviewed-by:alexchen --- src/util/virfile.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/util/virfile.c b/src/util/virfile.c index 20260a2..ae02a6e 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -88,6 +88,7 @@ #include "virstring.h" #include "virutil.h" #include "virsocket.h" +#include "virthread.h" #define VIR_FROM_THIS VIR_FROM_NONE @@ -108,6 +109,9 @@ VIR_LOG_INIT("util.file"); # define O_DIRECT 0 #endif +/* Global mutex to avoid races */ +virMutex fileLock =3D VIR_MUTEX_INITIALIZER; + int virFileClose(int *fdptr, virFileCloseFlags flags) { int saved_errno =3D 0; @@ -2612,15 +2616,18 @@ virDirCreateNoFork(const char *path, struct stat st; bool created =3D false; + virMutexLock(&fileLock); if (!((flags & VIR_DIR_CREATE_ALLOW_EXIST) && virFileExists(path))) { if (mkdir(path, mode) < 0) { ret =3D -errno; virReportSystemError(errno, _("failed to create directory '%s'= "), path); + virMutexUnlock(&fileLock); goto error; } created =3D true; } + virMutexUnlock(&fileLock); if (stat(path, &st) =3D=3D -1) { ret =3D -errno; --=20 1.8.3.1 --------------C8AC28245F681CD30AB7C431 Content-Type: text/plain; charset="UTF-8"; name="utils-add-mutex-to-avoid-races-in-virfile.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="utils-add-mutex-to-avoid-races-in-virfile.patch" RnJvbSBkOWY3ZWQyYWY1ODEyMjI4MDQzOTJmOWI5M2RjNmFhZjdkOGM4OTk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaWhvbmcgWXUgPHl1Ymlob25nQGh1YXdlaS5jb20+CkRhdGU6 IFR1ZSwgMTYgSnVuIDIwMjAgMjI6MDg6NTUgKzA4MDAKU3ViamVjdDogW1BBVENIXSB1dGlsczog YWRkIG11dGV4IHRvIGF2b2lkIHJhY2VzIGluIHZpcmZpbGUKClRoZXJlIGFyZSByYWNlcyBjb25k aWN0aW9uIHRvIG1ha2UgJy9ydW4vbGlidmlydC9xZW11L2RidXMnIGRpcmVjdG9yeSBpbgp2aXJE aXJDcmVhdGVOb0ZvcmsoKSB3aGlsZSBjb25jdXJyZW50IHN0YXJ0IFZNcywgYW5kIGdldCAiZmFp bGVkIHRvIGNyZWF0ZQpkaXJlY3RvcnkgJy9ydW4vbGlidmlydC9xZW11L2RidXMnOiBGaWxlIGV4 aXN0cyIgZXJyb3IgbWVzc2FnZS4gQWRkIGFuCm11dGV4IHRvIGF2b2lkIHJhY2VzLgoKU2lnbmVk LW9mZi1ieTpCaWhvbmcgWXUgPHl1Ymlob25nQGh1YXdlaS5jb20+ClJldmlld2VkLWJ5OkNodWFu IFpoZW5nIDx6aGVuZ2NodWFuQGh1YXdlaS5jb20+ClJldmlld2VkLWJ5OmFsZXhjaGVuIDxhbGV4 LmNoZW5AaHVhd2VpLmNvbT4KLS0tCiBzcmMvdXRpbC92aXJmaWxlLmMgfCA3ICsrKysrKysKIDEg ZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvdXRpbC92aXJm aWxlLmMgYi9zcmMvdXRpbC92aXJmaWxlLmMKaW5kZXggMjAyNjBhMi4uYWUwMmE2ZSAxMDA2NDQK LS0tIGEvc3JjL3V0aWwvdmlyZmlsZS5jCisrKyBiL3NyYy91dGlsL3ZpcmZpbGUuYwpAQCAtODgs NiArODgsNyBAQAogI2luY2x1ZGUgInZpcnN0cmluZy5oIgogI2luY2x1ZGUgInZpcnV0aWwuaCIK ICNpbmNsdWRlICJ2aXJzb2NrZXQuaCIKKyNpbmNsdWRlICJ2aXJ0aHJlYWQuaCIKIAogI2RlZmlu ZSBWSVJfRlJPTV9USElTIFZJUl9GUk9NX05PTkUKIApAQCAtMTA4LDYgKzEwOSw5IEBAIFZJUl9M T0dfSU5JVCgidXRpbC5maWxlIik7CiAjIGRlZmluZSBPX0RJUkVDVCAwCiAjZW5kaWYKIAorLyog R2xvYmFsIG11dGV4IHRvIGF2b2lkIHJhY2VzICovCit2aXJNdXRleCBmaWxlTG9jayA9IFZJUl9N VVRFWF9JTklUSUFMSVpFUjsKKwogaW50IHZpckZpbGVDbG9zZShpbnQgKmZkcHRyLCB2aXJGaWxl Q2xvc2VGbGFncyBmbGFncykKIHsKICAgICBpbnQgc2F2ZWRfZXJybm8gPSAwOwpAQCAtMjYxMiwx NSArMjYxNiwxOCBAQCB2aXJEaXJDcmVhdGVOb0ZvcmsoY29uc3QgY2hhciAqcGF0aCwKICAgICBz dHJ1Y3Qgc3RhdCBzdDsKICAgICBib29sIGNyZWF0ZWQgPSBmYWxzZTsKIAorICAgIHZpck11dGV4 TG9jaygmZmlsZUxvY2spOwogICAgIGlmICghKChmbGFncyAmIFZJUl9ESVJfQ1JFQVRFX0FMTE9X X0VYSVNUKSAmJiB2aXJGaWxlRXhpc3RzKHBhdGgpKSkgewogICAgICAgICBpZiAobWtkaXIocGF0 aCwgbW9kZSkgPCAwKSB7CiAgICAgICAgICAgICByZXQgPSAtZXJybm87CiAgICAgICAgICAgICB2 aXJSZXBvcnRTeXN0ZW1FcnJvcihlcnJubywgXygiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3Rvcnkg JyVzJyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCk7CisgICAgICAg ICAgICB2aXJNdXRleFVubG9jaygmZmlsZUxvY2spOwogICAgICAgICAgICAgZ290byBlcnJvcjsK ICAgICAgICAgfQogICAgICAgICBjcmVhdGVkID0gdHJ1ZTsKICAgICB9CisgICAgdmlyTXV0ZXhV bmxvY2soJmZpbGVMb2NrKTsKIAogICAgIGlmIChzdGF0KHBhdGgsICZzdCkgPT0gLTEpIHsKICAg ICAgICAgcmV0ID0gLWVycm5vOwotLSAKMS44LjMuMQoK --------------C8AC28245F681CD30AB7C431--