From nobody Fri Dec 19 15:49:42 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1739895831731361.809892708265; Tue, 18 Feb 2025 08:23:51 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 9D82A1AB0; Tue, 18 Feb 2025 11:23:50 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 7D6301C3A; Tue, 18 Feb 2025 11:23:14 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 09AFD159E; Tue, 18 Feb 2025 10:03:36 -0500 (EST) Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 619F71567 for ; Tue, 18 Feb 2025 10:03:35 -0500 (EST) Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-5e058ca6806so687076a12.3 for ; Tue, 18 Feb 2025 07:03:35 -0800 (PST) Received: from localhost.localdomain ([2a01:7c8:7c8:f866:10::101f]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5e02ebeaaa1sm5940716a12.5.2025.02.18.07.03.32 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 18 Feb 2025 07:03:32 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739891014; x=1740495814; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4d/oIpKb0CFGr+ej8M92K/3FIvgBDv6V650Ja2yAHZU=; b=FwDdTJEzGgJAvJ93cui8ag9AxSCBtPbl8J8dkcMio1FGO6F61QtBKJPjpiAcbwLrbZ kOpPdnhlxwsen8hoqHsgSBOBIYmwgCkLLgLcj2pTHAzeRaGWriICzJ8UULawnPtIYe54 m7eoZ/psK6AlXTHGT/vFQoTvFMs5lBwWPh+ffGV9PFRA4YIaUiotx65r9VddffMcaA+X tc+4fbuAdEkX4ClCzluISZZuObvi+4lzKMrGHn7I0WQYLbi5ip7jOfnooLoN7fRWPL+O 68dqaZEX3G61hZRBnR3NnUuzCvIhebBtOLTjLPa243S5q4vkyboLZADQftgFQFF3NAdL lEaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739891014; x=1740495814; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4d/oIpKb0CFGr+ej8M92K/3FIvgBDv6V650Ja2yAHZU=; b=j2OtC+Mbsx58ENLiBK6Cyd6n8jEKprxyHvCVDeSlpmGqSl80XgcB8EYyETs2gAJaqb UHKK+UIAkGzGVAe0fhGEpEU9yIgBy5svDfLWlHs1W6BeTr1b7UVUUmE4JUAx2TftLr8k fpoaR+v9i8ePB7eEFkYymlzsJuPGrrcCaAEREg7KQjrsfxfp5cpFB9JaP75aONHi/AWz nl+5WG+Z9AeioznEweuDqU5GTsxRUJpOs9KjFy8vU52GwBoNE2OXdYTd+32pi/HaNdnX Q9eGNvSAdAIHLLp7N4/dbhkejeB/RpRn88vY3jy0WfxRB2Yy7MeEy61uuDk9co8IeUKq w2jw== X-Gm-Message-State: AOJu0YyIceM/aSzpKBB/4XYGRh9EiCiL/nOBRRQ5/5QmbR0y4AMtYCwe 4096suztRUXT8rNhs+1HkCf7oNoCcmGq1Zr754/3ox8R1MrbSOm1kO6iFxc= X-Gm-Gg: ASbGncuThzKSz7ANmTCM+o5wWtxIYLcs+m62pVQY3LuevXdp5tV8JNNTmRMPhCdzcPr 0aMkOAfN/VB+bnJPKDgi3wcFuK3AT5Wn/n3cZyQjZMCi3URWNbeu+l6RGsgxq9n5b1AotKT/7zA yljp3oUqwxi2fKtR4RKlK/nxs6e11/rmvKYi7B1uFgEJ6624XFWIoHzQn5sH/DUopIAdm34iOi0 kxi9B7cI/5ZLgpTz3fypjyyCQNdef7pzLnw9+SmWyy382R8v0NZvoCsaqt7oDJblGARCSzLfK38 QoWgB0CXCyXDZLL1MflklBnj2a+HaYScqpvLuW7Cynu3 X-Google-Smtp-Source: AGHT+IEVQrNgr7xsTUELe1Mqb+9Eu4oRUyvMgUpQJ3k2NZT0xAJ54l6u6kVDSoMUH7dyYV3J8yOjgw== X-Received: by 2002:a05:6402:2554:b0:5e0:7f3b:b8c4 with SMTP id 4fb4d7f45d1cf-5e07f3bcbaamr1838606a12.15.1739891012860; Tue, 18 Feb 2025 07:03:32 -0800 (PST) From: Dion Bosschieter To: devel@lists.libvirt.org Subject: [PATCH 1/1] nwfilter: Fix deadlock between nwfilter-list and VM startup/migration Date: Tue, 18 Feb 2025 15:56:32 +0100 Message-Id: <20250218145632.30640-2-dionbosschieter@gmail.com> X-Mailer: git-send-email 2.39.3 (Apple Git-146) In-Reply-To: <20250218145632.30640-1-dionbosschieter@gmail.com> References: <20250218145632.30640-1-dionbosschieter@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-MailFrom: dionbosschieter@gmail.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0 Message-ID-Hash: 4YXUSJKHHUZ5TERCBC7PRD6IAQ56F35V X-Message-ID-Hash: 4YXUSJKHHUZ5TERCBC7PRD6IAQ56F35V X-Mailman-Approved-At: Tue, 18 Feb 2025 16:23:10 -0500 CC: jean-louis@dupond.be, dionbosschieter@gmail.com X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1739895834406019100 Content-Type: text/plain; charset="utf-8" A deadlock occurs when `nwfilterBindingCreateXML` and `nwfilterConnectListA= llNWFilters` acquire locks in an inconsistent order. This patch ensures `nwfilterBinding= CreateXML` acquires `driverMutex` before `updateLock`, resolving the issue. Additionally, added `driverMutex` to `nwfilterBindingDelete` to maintain co= nsistent locking order. Signed-off-by: Dion Bosschieter Reviewed-by: Daniel P. Berrang=C3=A9 --- src/nwfilter/nwfilter_driver.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c index 8ece91bf7c..58e9fcfd51 100644 --- a/src/nwfilter/nwfilter_driver.c +++ b/src/nwfilter/nwfilter_driver.c @@ -754,11 +754,13 @@ nwfilterBindingCreateXML(virConnectPtr conn, if (!(ret =3D virGetNWFilterBinding(conn, def->portdevname, def->filte= r))) goto cleanup; =20 - VIR_WITH_MUTEX_LOCK_GUARD(&driver->updateLock) { - if (virNWFilterInstantiateFilter(driver, def) < 0) { - virNWFilterBindingObjListRemove(driver->bindings, obj); - g_clear_pointer(&ret, virObjectUnref); - goto cleanup; + VIR_WITH_MUTEX_LOCK_GUARD(&driverMutex) { + VIR_WITH_MUTEX_LOCK_GUARD(&driver->updateLock) { + if (virNWFilterInstantiateFilter(driver, def) < 0) { + virNWFilterBindingObjListRemove(driver->bindings, obj); + g_clear_pointer(&ret, virObjectUnref); + goto cleanup; + } } } =20 @@ -783,6 +785,7 @@ nwfilterBindingCreateXML(virConnectPtr conn, static int nwfilterBindingDelete(virNWFilterBindingPtr binding) { + VIR_LOCK_GUARD lock =3D virLockGuardLock(&driverMutex); virNWFilterBindingObj *obj; virNWFilterBindingDef *def; int ret =3D -1; --=20 2.39.3 (Apple Git-146)