Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2218029/?format=api
{ "id": 2218029, "url": "http://patchwork.ozlabs.org/api/patches/2218029/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260331095302.644608-3-marcandre.lureau@redhat.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260331095302.644608-3-marcandre.lureau@redhat.com>", "list_archive_url": null, "date": "2026-03-31T09:52:58", "name": "[PULL,2/6] ui/dbus: associate add_client completion with its request", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "89d785b5ccf477c3970d15470414bb57e1acd30b", "submitter": { "id": 66774, "url": "http://patchwork.ozlabs.org/api/people/66774/?format=api", "name": "Marc-André Lureau", "email": "marcandre.lureau@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260331095302.644608-3-marcandre.lureau@redhat.com/mbox/", "series": [ { "id": 498160, "url": "http://patchwork.ozlabs.org/api/series/498160/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=498160", "date": "2026-03-31T09:52:57", "name": "[PULL,1/6] audio/mixeng: fix sw/hw mixup in audio_pcm_sw_init_", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498160/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2218029/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2218029/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=VbFp+9rv;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flNkJ08wSz1yGT\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 20:54:16 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w7Vmq-0000Vi-3C; Tue, 31 Mar 2026 05:53:28 -0400", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>)\n id 1w7Vmp-0000VD-2x\n for qemu-devel@nongnu.org; Tue, 31 Mar 2026 05:53:27 -0400", "from us-smtp-delivery-124.mimecast.com ([170.10.133.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>)\n id 1w7Vmn-00084z-Gy\n for qemu-devel@nongnu.org; Tue, 31 Mar 2026 05:53:26 -0400", "from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-120-5H_G1zdKOyeTX3MUod59SA-1; Tue,\n 31 Mar 2026 05:53:21 -0400", "from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 016CA195608E; Tue, 31 Mar 2026 09:53:20 +0000 (UTC)", "from localhost (unknown [10.44.22.22])\n by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 6E4B330002DA; Tue, 31 Mar 2026 09:53:17 +0000 (UTC)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1774950804;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=mHpBtpFggB69Aq4TcqZoU6H0mIeC/0Ty0iKbm2he4uw=;\n b=VbFp+9rvhYh1CmA2Is6MF+ussTaeJo3Ev/J68iShVO/JVN/eNyjYyEtA2zvEPPT2/ZWd3C\n Y34ocYj93UngjpW8Hau5sno2rt1T8hQkhwz8s6d78y0fW/YGlwVUbNSgeo4fii1N4ezkGc\n QV0ih1M6JK4iu43gffoqsnorQXhuADU=", "X-MC-Unique": "5H_G1zdKOyeTX3MUod59SA-1", "X-Mimecast-MFC-AGG-ID": "5H_G1zdKOyeTX3MUod59SA_1774950800", "From": "marcandre.lureau@redhat.com", "To": "qemu-devel@nongnu.org", "Cc": "peter.maydell@linaro.org, GuoHan Zhao <zhaoguohan@kylinos.cn>,\n\t=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>", "Subject": "[PULL 2/6] ui/dbus: associate add_client completion with its request", "Date": "Tue, 31 Mar 2026 13:52:58 +0400", "Message-ID": "<20260331095302.644608-3-marcandre.lureau@redhat.com>", "In-Reply-To": "<20260331095302.644608-1-marcandre.lureau@redhat.com>", "References": "<20260331095302.644608-1-marcandre.lureau@redhat.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.4", "Received-SPF": "pass client-ip=170.10.133.124;\n envelope-from=marcandre.lureau@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com", "X-Spam_score_int": "27", "X-Spam_score": "2.7", "X-Spam_bar": "++", "X-Spam_report": "(2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, RCVD_IN_SBL_CSS=3.335,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1, RCVD_IN_VALIDITY_RPBL_BLOCKED=1,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "From: GuoHan Zhao <zhaoguohan@kylinos.cn>\n\nCommit 99997823bbbd (\"ui/dbus: add p2p=on/off option\")\nintroduced an asynchronous D-Bus client setup path, with the completion\nhandler reaching back into the global dbus_display state.\n\nThis makes the callback effectively operate on whatever request is\ncurrent when it runs, rather than the one that created it. A completion\nfrom an older request can therefore clear a newer\nadd_client_cancellable or install its connection after a replacement\nrequest has already been issued. It also relies on the DBusDisplay\ninstance remaining alive until completion.\n\nFix this by passing the DBusDisplay and GCancellable as callback data,\ntaking references while the async setup is in flight, and only acting\non completion if it still matches the current request. Also drop the\nprevious cancellable before creating a new request.\n\nFixes: 99997823bbbd (\"ui/dbus: add p2p=on/off option\")\nSigned-off-by: GuoHan Zhao <zhaoguohan@kylinos.cn>\nReviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>\nMessage-ID: <20260326065111.626236-1-zhaoguohan@kylinos.cn>\n---\n ui/dbus.c | 44 ++++++++++++++++++++++++++++++++++++++++----\n 1 file changed, 40 insertions(+), 4 deletions(-)", "diff": "diff --git a/ui/dbus.c b/ui/dbus.c\nindex 4f24215555a..7c54b6a502d 100644\n--- a/ui/dbus.c\n+++ b/ui/dbus.c\n@@ -263,22 +263,52 @@ dbus_display_complete(UserCreatable *uc, Error **errp)\n }\n }\n \n+typedef struct DBusDisplayAddClientData {\n+ DBusDisplay *display;\n+ GCancellable *cancellable;\n+} DBusDisplayAddClientData;\n+\n+static void dbus_display_add_client_data_free(DBusDisplayAddClientData *data)\n+{\n+ if (data->display) {\n+ object_unref(OBJECT(data->display));\n+ data->display = NULL;\n+ }\n+ g_clear_object(&data->cancellable);\n+ g_free(data);\n+}\n+\n+G_DEFINE_AUTOPTR_CLEANUP_FUNC(DBusDisplayAddClientData,\n+ dbus_display_add_client_data_free)\n+\n static void\n dbus_display_add_client_ready(GObject *source_object,\n GAsyncResult *res,\n gpointer user_data)\n {\n+ g_autoptr(DBusDisplayAddClientData) data = user_data;\n+ DBusDisplay *display = data->display;\n+ bool current = display->add_client_cancellable == data->cancellable;\n g_autoptr(GError) err = NULL;\n g_autoptr(GDBusConnection) conn = NULL;\n \n- g_clear_object(&dbus_display->add_client_cancellable);\n+ if (current) {\n+ g_clear_object(&display->add_client_cancellable);\n+ }\n \n conn = g_dbus_connection_new_finish(res, &err);\n if (!conn) {\n- error_printf(\"Failed to accept D-Bus client: %s\", err->message);\n+ if (!g_error_matches(err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {\n+ error_printf(\"Failed to accept D-Bus client: %s\", err->message);\n+ }\n+ return;\n }\n \n- g_dbus_object_manager_server_set_connection(dbus_display->server, conn);\n+ if (!current) {\n+ return;\n+ }\n+\n+ g_dbus_object_manager_server_set_connection(display->server, conn);\n g_dbus_connection_start_message_processing(conn);\n }\n \n@@ -290,6 +320,7 @@ dbus_display_add_client(int csock, Error **errp)\n g_autoptr(GSocket) socket = NULL;\n g_autoptr(GSocketConnection) conn = NULL;\n g_autofree char *guid = g_dbus_generate_guid();\n+ DBusDisplayAddClientData *data;\n \n if (!dbus_display) {\n error_setg(errp, \"p2p connections not accepted in bus mode\");\n@@ -298,6 +329,7 @@ dbus_display_add_client(int csock, Error **errp)\n \n if (dbus_display->add_client_cancellable) {\n g_cancellable_cancel(dbus_display->add_client_cancellable);\n+ g_clear_object(&dbus_display->add_client_cancellable);\n }\n \n #ifdef WIN32\n@@ -318,6 +350,10 @@ dbus_display_add_client(int csock, Error **errp)\n conn = g_socket_connection_factory_create_connection(socket);\n \n dbus_display->add_client_cancellable = g_cancellable_new();\n+ data = g_new0(DBusDisplayAddClientData, 1);\n+ data->display = DBUS_DISPLAY(object_ref(OBJECT(dbus_display)));\n+ data->cancellable = g_object_ref(dbus_display->add_client_cancellable);\n+\n GDBusConnectionFlags flags =\n G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER |\n G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING;\n@@ -332,7 +368,7 @@ dbus_display_add_client(int csock, Error **errp)\n NULL,\n dbus_display->add_client_cancellable,\n dbus_display_add_client_ready,\n- NULL);\n+ data);\n \n return true;\n }\n", "prefixes": [ "PULL", "2/6" ] }