get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2196606/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2196606,
    "url": "http://patchwork.ozlabs.org/api/patches/2196606/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/E1vrbaP-000Gqb-B3@kylie.crudebyte.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": "<E1vrbaP-000Gqb-B3@kylie.crudebyte.com>",
    "list_archive_url": null,
    "date": "2026-02-15T12:44:50",
    "name": "hw/9pfs: fix missing EOPNOTSUPP on Twstat and Trenameat for fs synth driver",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "00f747b51d9b862119970977ec493a77edabaf47",
    "submitter": {
        "id": 77616,
        "url": "http://patchwork.ozlabs.org/api/people/77616/?format=api",
        "name": "Christian Schoenebeck",
        "email": "qemu_oss@crudebyte.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/E1vrbaP-000Gqb-B3@kylie.crudebyte.com/mbox/",
    "series": [
        {
            "id": 492215,
            "url": "http://patchwork.ozlabs.org/api/series/492215/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=492215",
            "date": "2026-02-15T12:44:50",
            "name": "hw/9pfs: fix missing EOPNOTSUPP on Twstat and Trenameat for fs synth driver",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/492215/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2196606/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196606/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 (4096-bit key;\n unprotected) header.d=crudebyte.com header.i=@crudebyte.com\n header.a=rsa-sha256 header.s=kylie header.b=CVX3Ci+o;\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 4fDRhL3XQLz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 00:34:09 +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 1vrcFh-00026B-Vh; Sun, 15 Feb 2026 08:33:34 -0500",
            "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)\n (envelope-from\n <d12f2196c3f6514f9e8668e308f825fb2622f3a1@kylie.crudebyte.com>)\n id 1vrcFf-00025U-8J\n for qemu-devel@nongnu.org; Sun, 15 Feb 2026 08:33:31 -0500",
            "from kylie.crudebyte.com ([5.189.157.229])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1)\n (envelope-from\n <d12f2196c3f6514f9e8668e308f825fb2622f3a1@kylie.crudebyte.com>)\n id 1vrcFd-0007cP-LO\n for qemu-devel@nongnu.org; Sun, 15 Feb 2026 08:33:30 -0500"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n d=crudebyte.com; s=kylie; h=Message-Id:Cc:To:Subject:Date:From:Content-Type:\n Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Content-ID:\n Content-Description; bh=/Whm1FxQDP01jjk6aPn6HrqaQpnWhinhSdK4CgTnjzc=; b=CVX3C\n i+osYvd38w5/98TmHSobAfxKI5bBPsGY6PTY4MtsBreZchenLfDXfR8/CuvXJTY9VAhIgn4HP+XJs\n EVcjCUGVpsgIQaWkJEZDhOmachOeHhCjhC2Ss+4RmJ+nYKAOuYTFxZrp+K7XIGo58V8EUgP/nJPvJ\n KSyfZ5tnzDGhave8GVhqmjfwwtCC9Z39WNxKYViehUBajR6KrgNmzQKtTzUPvnOggmVvGxXDK7/rX\n XGf2P32l/LzdqyaDXDI+8YB3ihx3g7+4Czq7wJOMSlBtc19QvLGxrs6gwoo4cu/bb4/PA12C4Ctu8\n AMakTuX5JAzmDxNB7aT75eaakeHCs3XhwzT7z9jo8U9FG/WPExPeWV/SULCQo0q8yJYql1U55tGvH\n WE3Ue3yXJYqAlp2mR6lsLFofND35b2SNghwEsz75L0H0727IuUiMGChVkq5HPksMETdqbmCo8MqR9\n yBaCfEvDU8oydNsNZCMiM4oy5Mnfaz7CubAJ3ixxIpv4IpI6WHlA/5eO3tg3ARSSXmuGmIBRP5V2q\n df306iNoRfrwVC1lcRrXUzgJIBSDDTBggQ+3POS8rFsnZTJxzMpvmvfqQkDN8utiaFKKGTeJSQYqC\n AsMcuW/JuWMgq9BLRLmmFqxLle3qQAYSW4ZNYIWEKrELCpAyYFWrhW8+b3Tmic=;",
        "From": "Christian Schoenebeck <qemu_oss@crudebyte.com>",
        "Date": "Sun, 15 Feb 2026 13:44:50 +0100",
        "Subject": "[PATCH] hw/9pfs: fix missing EOPNOTSUPP on Twstat and Trenameat for\n fs synth driver",
        "To": "qemu-devel@nongnu.org",
        "Cc": "Oliver Chang <ochang@google.com>, Alexander Bulekov <alxndr@bu.edu>,\n Mauro Matteo Cascella <mcascell@redhat.com>, Greg Kurz <groug@kaod.org>",
        "Message-Id": "<E1vrbaP-000Gqb-B3@kylie.crudebyte.com>",
        "Received-SPF": "pass client-ip=5.189.157.229;\n envelope-from=d12f2196c3f6514f9e8668e308f825fb2622f3a1@kylie.crudebyte.com;\n helo=kylie.crudebyte.com",
        "X-Spam_score_int": "-20",
        "X-Spam_score": "-2.1",
        "X-Spam_bar": "--",
        "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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": "Renaming files/dirs is only supported by path-based fs drivers. EOPNOTSUPP\nshould be returned on any renaming attempt for not path-based fs drivers.\nThis was already the case for 9p \"Trename\" request type. However for 9p\nrequest types \"Trenameat\" and \"Twstat\" this was yet missing.\n\nSo fix this by checking in Twstat and Trenameat request handlers whether\nthe fs driver in use is really path based, if not return EOPNOTSUPP and\nabort further handling of the request.\n\nThis fixes a crash with the 9p \"synth\" fs driver which is not path-based.\n\nThe crash happened because the synth driver stores and expects a raw\nV9fsSynthNode pointer instead of a C-string on V9fsPath.data. So the\nC-string delivered by 9p server to synth fs driver was incorrectly\ncasted to a V9fsSynthNode pointer, eventually causing a segfault.\n\nReported-by: Oliver Chang <ochang@google.com>\nFixes: https://issues.oss-fuzz.com/issues/477990727\nResolves: https://gitlab.com/qemu-project/qemu/-/issues/3298\nSigned-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>\n---\n hw/9pfs/9p.c | 11 +++++++++++\n 1 file changed, 11 insertions(+)",
    "diff": "diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c\nindex 02366f43a8..e2713b9eee 100644\n--- a/hw/9pfs/9p.c\n+++ b/hw/9pfs/9p.c\n@@ -3516,6 +3516,12 @@ static void coroutine_fn v9fs_renameat(void *opaque)\n         goto out_err;\n     }\n \n+    /* if fs driver is not path based, return EOPNOTSUPP */\n+    if (!(s->ctx.export_flags & V9FS_PATHNAME_FSCONTEXT)) {\n+        err = -EOPNOTSUPP;\n+        goto out_err;\n+    }\n+\n     v9fs_path_write_lock(s);\n     err = v9fs_complete_renameat(pdu, olddirfid,\n                                  &old_name, newdirfid, &new_name);\n@@ -3606,6 +3612,11 @@ static void coroutine_fn v9fs_wstat(void *opaque)\n         }\n     }\n     if (v9stat.name.size != 0) {\n+        /* if fs driver is not path based, return EOPNOTSUPP */\n+        if (!(s->ctx.export_flags & V9FS_PATHNAME_FSCONTEXT)) {\n+            err = -EOPNOTSUPP;\n+            goto out;\n+        }\n         v9fs_path_write_lock(s);\n         err = v9fs_complete_rename(pdu, fidp, -1, &v9stat.name);\n         v9fs_path_unlock(s);\n",
    "prefixes": []
}