Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217633/?format=api
{ "id": 2217633, "url": "http://patchwork.ozlabs.org/api/patches/2217633/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260330091310.42868-1-zhaoguohan@kylinos.cn/", "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": "<20260330091310.42868-1-zhaoguohan@kylinos.cn>", "list_archive_url": null, "date": "2026-03-30T09:13:10", "name": "ui/dbus: tear down clipboard callbacks on display finalize", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "f03fd450f7fdbe5b0de4a2cc4123b7b5f65d7888", "submitter": { "id": 92952, "url": "http://patchwork.ozlabs.org/api/people/92952/?format=api", "name": "GuoHan Zhao", "email": "zhaoguohan@kylinos.cn" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260330091310.42868-1-zhaoguohan@kylinos.cn/mbox/", "series": [ { "id": 497987, "url": "http://patchwork.ozlabs.org/api/series/497987/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=497987", "date": "2026-03-30T09:13:10", "name": "ui/dbus: tear down clipboard callbacks on display finalize", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/497987/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217633/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2217633/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 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 4fklt71r0sz1xrn\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 30 Mar 2026 20:13:51 +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 1w78gk-0000pv-RE; Mon, 30 Mar 2026 05:13:38 -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 <zhaoguohan@kylinos.cn>)\n id 1w78gd-0000pj-6C\n for qemu-devel@nongnu.org; Mon, 30 Mar 2026 05:13:31 -0400", "from mailgw.kylinos.cn ([124.126.103.232])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhaoguohan@kylinos.cn>)\n id 1w78ga-0000ZF-AI\n for qemu-devel@nongnu.org; Mon, 30 Mar 2026 05:13:30 -0400", "from zgh-vmware-virtual-platform.localdomain [(120.228.139.31)] by\n mailgw.kylinos.cn (envelope-from <zhaoguohan@kylinos.cn>)\n (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256)\n with ESMTP id 1730295258; Mon, 30 Mar 2026 17:13:13 +0800" ], "X-UUID": [ "add6b3fe2c1811f1aa26b74ffac11d73-20260330", "add6b3fe2c1811f1aa26b74ffac11d73-20260330" ], "X-CTIC-Tags": "HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NAME, HR_CC_NO_NAME,\n HR_CHARSET\n HR_CHARSET_NUM, HR_CTE_8B, HR_CTT_MISS, HR_DATE_H, HR_DATE_WKD\n HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER\n HR_SJ_NOR_SYM, HR_SJ_PHRASE, HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_CHARSET\n HR_TO_CHARSET_NUM, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NAME, IP_UNTRUSTED\n SRC_UNTRUSTED, IP_UNFAMILIAR, SRC_UNFAMILIAR, DN_TRUSTED, SRC_TRUSTED\n SA_UNTRUSTED, SA_UNFAMILIAR, SN_UNTRUSTED, SN_UNFAMILIAR, SPF_NOPASS\n DKIM_NOPASS, DMARC_NOPASS, CIE_BAD, CIE_GOOD_SPF, CIE_UNKNOWN\n GTI_FG_BS, GTI_RG_INFO, GTI_C_BU, AMN_GOOD, ABX_MISS_RDNS", "X-CID-O-RULE": "Release_Ham", "X-CID-RULE": "Release_Ham", "X-CID-O-INFO": "VERSION:1.3.12, REQID:ca25847d-d120-4f72-adb3-28f6318e4311,\n IP:20,\n URL:0,TC:0,Content:0,EDM:25,RT:0,SF:-30,FILE:0,BULK:0,RULE:Release_Ham,ACT\n ION:release,TS:15", "X-CID-INFO": "VERSION:1.3.12, REQID:ca25847d-d120-4f72-adb3-28f6318e4311, IP:20,\n UR\n L:0,TC:0,Content:0,EDM:25,RT:0,SF:-30,FILE:0,BULK:0,RULE:Release_Ham,ACTIO\n N:release,TS:15", "X-CID-META": "VersionHash:e7bac3a, CLOUDID:00b8241301bc45c5596a823cd13bd3ed,\n BulkI\n D:260330171315FTVQK6K5,BulkQuantity:0,Recheck:0,SF:10|66|78|102|127|898,TC\n :nil,Content:0|15|50,EDM:5,IP:-2,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC\n :nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0", "X-CID-BVR": "2,SSN|SDN", "X-CID-BAS": "2,SSN|SDN,0,_", "X-CID-FACTOR": "TF_CID_SPAM_SNR", "X-CID-RHF": "D41D8CD98F00B204E9800998ECF8427E", "X-User": "zhaoguohan@kylinos.cn", "From": "GuoHan Zhao <zhaoguohan@kylinos.cn>", "To": "=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>", "Cc": "qemu-devel@nongnu.org,\n\tGuoHan Zhao <zhaoguohan@kylinos.cn>", "Subject": "[PATCH] ui/dbus: tear down clipboard callbacks on display finalize", "Date": "Mon, 30 Mar 2026 17:13:10 +0800", "Message-ID": "<20260330091310.42868-1-zhaoguohan@kylinos.cn>", "X-Mailer": "git-send-email 2.43.0", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=124.126.103.232;\n envelope-from=zhaoguohan@kylinos.cn; helo=mailgw.kylinos.cn", "X-Spam_score_int": "1", "X-Spam_score": "0.1", "X-Spam_bar": "/", "X-Spam_report": "(0.1 / 5.0 requ) BAYES_00=-1.9,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1, RCVD_IN_VALIDITY_RPBL_BLOCKED=1,\n SPF_HELO_NONE=0.001, SPF_PASS=-0.001,\n UNPARSEABLE_RELAY=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": "The clipboard D-Bus teardown path currently runs when the peer\ndisappears, but not when DBusDisplay itself is finalized.\n\nThat leaves pending clipboard requests and signal handlers associated\nwith the clipboard proxy active past display teardown.\n\nAdd an explicit clipboard fini hook and invoke it from\ndbus_display_finalize() so the clipboard teardown also runs during\ndisplay destruction.\n\nFixes: ff1a5810f61f (\"ui/dbus: add clipboard interface\")\nSigned-off-by: GuoHan Zhao <zhaoguohan@kylinos.cn>\n---\n ui/dbus-clipboard.c | 14 ++++++++++++++\n ui/dbus.c | 1 +\n ui/dbus.h | 1 +\n 3 files changed, 16 insertions(+)", "diff": "diff --git a/ui/dbus-clipboard.c b/ui/dbus-clipboard.c\nindex 6787a7766877..4a01901e291b 100644\n--- a/ui/dbus-clipboard.c\n+++ b/ui/dbus-clipboard.c\n@@ -191,6 +191,7 @@ static void\n dbus_clipboard_unregister_proxy(DBusDisplay *dpy)\n {\n const char *name = NULL;\n+ GDBusConnection *connection = NULL;\n int i;\n \n for (i = 0; i < G_N_ELEMENTS(dpy->clipboard_request); ++i) {\n@@ -201,6 +202,13 @@ dbus_clipboard_unregister_proxy(DBusDisplay *dpy)\n return;\n }\n \n+ connection = g_dbus_proxy_get_connection(\n+ G_DBUS_PROXY(dpy->clipboard_proxy));\n+ if (connection) {\n+ g_signal_handlers_disconnect_by_data(connection, dpy);\n+ }\n+ g_signal_handlers_disconnect_by_data(dpy->clipboard_proxy, dpy);\n+\n name = g_dbus_proxy_get_name(G_DBUS_PROXY(dpy->clipboard_proxy));\n trace_dbus_clipboard_unregister(name);\n g_clear_object(&dpy->clipboard_proxy);\n@@ -425,6 +433,12 @@ dbus_clipboard_request(\n return DBUS_METHOD_INVOCATION_HANDLED;\n }\n \n+void\n+dbus_clipboard_fini(DBusDisplay *dpy)\n+{\n+ dbus_clipboard_unregister_proxy(dpy);\n+}\n+\n void\n dbus_clipboard_init(DBusDisplay *dpy)\n {\ndiff --git a/ui/dbus.c b/ui/dbus.c\nindex 4f24215555a4..be291f220ecd 100644\n--- a/ui/dbus.c\n+++ b/ui/dbus.c\n@@ -145,6 +145,7 @@ dbus_display_finalize(Object *o)\n dbus_display_notifier_remove(&dd->notifier);\n }\n \n+ dbus_clipboard_fini(dd);\n qemu_clipboard_peer_unregister(&dd->clipboard_peer);\n g_clear_object(&dd->clipboard);\n \ndiff --git a/ui/dbus.h b/ui/dbus.h\nindex 1e8c24a48e32..986d77746017 100644\n--- a/ui/dbus.h\n+++ b/ui/dbus.h\n@@ -150,5 +150,6 @@ void dbus_display_notify(DBusDisplayEvent *event);\n void dbus_chardev_init(DBusDisplay *dpy);\n \n void dbus_clipboard_init(DBusDisplay *dpy);\n+void dbus_clipboard_fini(DBusDisplay *dpy);\n \n #endif /* UI_DBUS_H */\n", "prefixes": [] }