Show a cover letter.

GET /api/1.1/covers/2220608/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2220608,
    "url": "http://patchwork.ozlabs.org/api/1.1/covers/2220608/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-um/cover/20260407164435.726012-1-michael.bommarito@gmail.com/",
    "project": {
        "id": 60,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/60/?format=api",
        "name": "User-mode Linux Development",
        "link_name": "linux-um",
        "list_id": "linux-um.lists.infradead.org",
        "list_email": "linux-um@lists.infradead.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260407164435.726012-1-michael.bommarito@gmail.com>",
    "date": "2026-04-07T16:44:34",
    "name": "[0/1] um: drivers: use libc strrchr() in cow_user.o",
    "submitter": {
        "id": 93078,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/93078/?format=api",
        "name": "Michael Bommarito",
        "email": "michael.bommarito@gmail.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/linux-um/cover/20260407164435.726012-1-michael.bommarito@gmail.com/mbox/",
    "series": [
        {
            "id": 499005,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/499005/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-um/list/?series=499005",
            "date": "2026-04-07T16:44:34",
            "name": "um: drivers: use libc strrchr() in cow_user.o",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/499005/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2220608/comments/",
    "headers": {
        "Return-Path": "\n <linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=FBHPN9LL;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=VKg3PgcR;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqsWG2rJ5z1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 08 Apr 2026 02:45:14 +1000 (AEST)",
            "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wA9Y8-00000006oQm-2FDw;\n\tTue, 07 Apr 2026 16:45:12 +0000",
            "from mail-qv1-xf2e.google.com ([2607:f8b0:4864:20::f2e])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wA9Y6-00000006oQ0-2FTJ\n\tfor linux-um@lists.infradead.org;\n\tTue, 07 Apr 2026 16:45:11 +0000",
            "by mail-qv1-xf2e.google.com with SMTP id\n 6a1803df08f44-8a049a767c3so609476d6.1\n        for <linux-um@lists.infradead.org>;\n Tue, 07 Apr 2026 09:45:09 -0700 (PDT)",
            "from workstation1 (c-68-48-65-54.hsd1.mi.comcast.net. [68.48.65.54])\n        by smtp.gmail.com with ESMTPSA id\n 6a1803df08f44-8aa70136e87sm62044156d6.22.2026.04.07.09.45.07\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Tue, 07 Apr 2026 09:45:07 -0700 (PDT)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help\n\t:List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding:\n\tMIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-Type:\n\tContent-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:\n\tResent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner;\n\tbh=gSINc38Cy5uCy/SOLZjP/5z73q6WQERusZs5SUoSVOk=; b=FBHPN9LLVFD/neOplPJErTXTf3\n\tFMOLsN5u31w5Jm/G4ux49pP0tuD5TC8ivI9JA9Ubrvl7gKa6LssIElJEh+ygS6lWy0mCaqHQ2Cgmg\n\t9CH+E2b728MAF2K1QT0l4Hnw0fncSbMnutL49Mn+5QdWzNuXv8E73Nkc2hmyhzlGZNTIujNWz76wi\n\tyBlQzCWK4oWnrOkqRp9gb1rB0PoIladM3WW6nlTs/otvx9+9B7zeVa0nkJfihW+7P/qAJ5fbP/9Nc\n\tLxg2u97EhbPQxq0LT5IVfPlwebmGGy9JH07nQcPNB2819/Cu7KL9KWBmL5NUP1KnkdWg8Dr7xL0nb\n\tUwFenzDg==;",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20251104; t=1775580309; x=1776185109;\n darn=lists.infradead.org;\n        h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n         :to:from:from:to:cc:subject:date:message-id:reply-to;\n        bh=gSINc38Cy5uCy/SOLZjP/5z73q6WQERusZs5SUoSVOk=;\n        b=VKg3PgcRtWn7eG/dlK/Ak7EGmqUj6T5QTNkilZ2Z3oFHqVOXdE5hM2V81FKL0WjVlC\n         fnaHGwLV7U5O2jGiTOPFbf/pDsP6PbqfN1fYHf6dJU0aBjHlt6u4H11VbxdcKqZhKhiO\n         CX08WUjVbNvYOMGsc+J5nie9dMYQkbdSy8w37/CfOmVMjknqXs/3oIzN96a6nqMmjPnU\n         q3k3gLVRh8m/9vRimzCVzMtFK2sTiIjeHHbEBdMw0+ZV/YKvmDJuRlsO1kHszRJIQn3N\n         nS5nBphrKgL8JTWNx3GJ3yeGiW7wLnWNA2Fq2dZdr9bBTYyIwFpNYUHLWn4n/OagboJa\n         0GAw=="
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1775580309; x=1776185109;\n        h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=gSINc38Cy5uCy/SOLZjP/5z73q6WQERusZs5SUoSVOk=;\n        b=mb5or+p79kqLLmRcIbGTlulvipEFW1MvxqKeGsLAQLWwoEupe09PzJC+epEIgQg//c\n         8HBDMGNC2nH7dGaUQRayGW3sH6hMnQolwvdBkeNgGn2SlF13gVp4vR9f5XHE9WU669ro\n         Ni3sJGD+RzL+37Vj1iM43mjcYFwhXEKU3FTA9kZZaSo1ID50FE+8xauApGCHu1+PlmJD\n         kgJPf83CTXEWCS9AzqKyNrqhiRomDiBA1SXklTKNWUOe2g48dbhQIAaDtWVNTtTN60yN\n         WrhOrXbyY1ved1xC8V9cSs4AgvGm2yP7ZjG7mxT91pEsDzX8+peu8GGuRNEqd8tfRCs/\n         IZ2w==",
        "X-Gm-Message-State": "AOJu0YxyW4uyyfSdPAyAFuVBpfXjrB2ttVJ4foybTVyhNaRZy8OBzmtd\n\tWpPiZYV2+2CtMAE+cFq/IyFpZVxHT/Gh3lbYMEqezVgujoaKcZp6lZDr",
        "X-Gm-Gg": "AeBDiev1P7nA8V1bZr+Sdzjki+wiw6halgoTt0Yfn95MhYIQT+0pkiwE/TuYSKqD5Uk\n\tOFfXxc41TjCbFCNfpIi/pOGl2db5WysODviPWqMhkTgGh2yqeIeyfY91rXoh4exZnTwJk4687/1\n\txuKGKyyT/Cv8Rqhussq5mXTLKCXhqHsHovpX15tTqvoHObef3RELifVWLh+Rq5Ve81Wj1wRD1R/\n\tIP2uIvKiSiXKyGgvAa/NQhScdnzx/cM9wUunzhiRZdb3SvQC+tCaFSf7ibrKq1ybzCzQ1veG3zd\n\tgpDyW0uk+EO8YbjbsXhLb7zi0sdkw0HCmgjVt7IYh40dD55f6/3reBbee/FFXTuRDvi0O5ZQdeo\n\tybr/uOgTxldu5PtMSJ0UsZSpDOsHPrB2gvhOMf6hTZ/R4To6JMJmZ+RLmJBVK3L3OIIuFSZ6IXY\n\ts5yvBLWfPfovJKgK32kjJjo/NH/lZT3SpX5zr3zNuGXG0aLGLyEEH62K7WP7TCK+lFOlQWmqmJ5\n\tue+IKtbOgbdXbcDfYjSfWnUUeE=",
        "X-Received": "by 2002:a05:6214:4883:b0:89f:65be:998a with SMTP id\n 6a1803df08f44-8a5e6ccdf6emr330429436d6.0.1775580308286;\n        Tue, 07 Apr 2026 09:45:08 -0700 (PDT)",
        "From": "Michael Bommarito <michael.bommarito@gmail.com>",
        "To": "Richard Weinberger <richard@nod.at>,\n\tAnton Ivanov <anton.ivanov@cambridgegreys.com>,\n\tJohannes Berg <johannes@sipsolutions.net>",
        "Cc": "linux-um@lists.infradead.org,\n\tlinux-kernel@vger.kernel.org,\n\tMichael Bommarito <michael.bommarito@gmail.com>",
        "Subject": "[PATCH 0/1] um: drivers: use libc strrchr() in cow_user.o",
        "Date": "Tue,  7 Apr 2026 12:44:34 -0400",
        "Message-ID": "<20260407164435.726012-1-michael.bommarito@gmail.com>",
        "X-Mailer": "git-send-email 2.53.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20260407_094510_594784_271DF884 ",
        "X-CRM114-Status": "GOOD (  22.88  )",
        "X-Spam-Score": "-2.1 (--)",
        "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam.  The original\n message has been attached to this so you can view it or label\n similar future email.  If you have any questions, see\n the administrator of that system for details.\n Content preview:  Hi, Building ARCH=um on hosts with glibc 2.43 fails due to\n    an interaction between UML's global -Dstrrchr=kernel_strrchr remap and\n glibc's\n    new C23 const-preserving macro for strrchr(). The failure is in\n arch/um/drivers/cow_user.c,\n    a host-side helper that calls libc strrchr(). The object is built whenever\n    CONFIG_BLK_DEV_UBD=y, which is the standard UML block device driver,\n so this\n    af [...]\n Content analysis details:   (-2.1 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/, no\n                             trust\n                             [2607:f8b0:4864:20:0:0:0:f2e listed in]\n                             [list.dnswl.org]\n -0.0 SPF_PASS               SPF: sender matches SPF record\n  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record\n -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from\n                             envelope-from domain\n  0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n not necessarily valid\n -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from\n author's\n                             domain\n -0.1 DKIM_VALID             Message has at least one valid DKIM or DK\n signature\n -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n                             [score: 0.0000]\n  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail\n provider\n                             [michael.bommarito(at)gmail.com]",
        "X-BeenThere": "linux-um@lists.infradead.org",
        "X-Mailman-Version": "2.1.34",
        "Precedence": "list",
        "List-Id": "<linux-um.lists.infradead.org>",
        "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/linux-um>,\n <mailto:linux-um-request@lists.infradead.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.infradead.org/pipermail/linux-um/>",
        "List-Post": "<mailto:linux-um@lists.infradead.org>",
        "List-Help": "<mailto:linux-um-request@lists.infradead.org?subject=help>",
        "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/linux-um>,\n <mailto:linux-um-request@lists.infradead.org?subject=subscribe>",
        "Sender": "\"linux-um\" <linux-um-bounces@lists.infradead.org>",
        "Errors-To": "linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"
    },
    "content": "Hi,\n\nBuilding ARCH=um on hosts with glibc 2.43 fails due to an interaction\nbetween UML's global -Dstrrchr=kernel_strrchr remap and glibc's new\nC23 const-preserving macro for strrchr().\n\nThe failure is in arch/um/drivers/cow_user.c, a host-side helper that\ncalls libc strrchr().  The object is built whenever CONFIG_BLK_DEV_UBD=y,\nwhich is the standard UML block device driver, so this affects most\nnon-trivial UML builds on Ubuntu/Debian today.\n\nI caught this while testing on the release candidate for Ubuntu 26.04\nLTS, whose libc is glibc 2.43.  With 26.04 LTS shipping in the next\nfew weeks and carrying five years of support, the affected user base\nwill grow quickly, which is the main rationale for the Cc: stable\ntrailer in the patch.\n\nThe root cause is that glibc 2.43 added (glibc commit cd748a63ab1a):\n\n  #define strrchr(S,C) __glibc_const_generic(S, const char *, strrchr(S, C))\n\nas part of C23 qualifier-generic support.  This function-like macro\nreplaces UML's -D object-like macro, and the recursive-expansion\nprotection in the C preprocessor causes the inner strrchr to resolve as\nthe bare symbol -- which was never declared under that name, because\nthe header declaration was already rewritten to kernel_strrchr by the\n-D.\n\nThe remap itself (commit 2c51a4bc0233) is still needed for kernel-side\nobjects to prevent linker clashes.  This was re-affirmed very recently\nin commit a74b6c0e53a6 (\"um: Don't rename vmap to kernel_vmap\"),\nwhich removed the now-obsolete vmap remap and updated the comment in\narch/um/Makefile to explicitly call out -Dstrrchr=kernel_strrchr as\none of the remaps that still prevents libc symbol clashes.  This patch\nonly exempts the one host-side object that is proven to break:\ncow_user.o.\n\nA standalone reproducer (fails on glibc >= 2.43, succeeds on older):\n\n  printf '#include <string.h>\\nvoid f(void) { char *p = strrchr(\"foo\", 47); }\\n' \\\n    | gcc -c -Dstrrchr=kernel_strrchr -x c - -o /dev/null\n\nTested on Ubuntu with glibc 2.43-2ubuntu1 and gcc 15.2.0 against\nv7.0-rc6 (3aae9383f42f).  v7.0-rc7 dropped on 2026-04-05 and neither\narch/um/drivers/Makefile nor arch/um/drivers/cow_user.c changed\nbetween rc6 and rc7, so this patch applies and behaves identically on\nboth.  The patched kernel builds cleanly, boots a Debian bookworm\nrootfs to multi-user, and boots with a COW overlay that exercises the\nabsolutize() -> strrchr() code path in cow_user.c.\n\ncow_user.c is the only file under arch/um/ that calls strrchr(), so\nthis patch is complete for the current tree.  A broader discussion\nabout whether the global strrchr remap should be narrowed further\n(given that glibc's C23 macros are here to stay for strchr, memchr,\nstrstr, etc.) may be warranted as a follow-up.\n\nCompatibility and impact\n========================\n\nThe patch only changes CFLAGS for one translation unit, cow_user.o.\nBy configuration:\n\n  - glibc >= 2.43: build is fixed (the point).\n  - glibc <  2.43: no observable change.  cow_user.o now calls libc\n    strrchr() instead of being silently redirected to kernel_strrchr()\n    by the global -D; both are functionally identical for the\n    NUL-terminated path strings absolutize() uses.\n  - CONFIG_STATIC_LINK=y + CONFIG_UML_NET_VDE=y (the original 2011\n    case): unaffected.  The global remap is preserved for every\n    other translation unit, so the linker clash that 2c51a4bc0233\n    fixed cannot recur.\n  - CONFIG_BLK_DEV_UBD=n: cow_user.o is not built; the new\n    per-object CFLAGS line is inert.\n\nVerified locally with nm: after the patch, cow_user.o references\nlibc strrchr (not kernel_strrchr), and the final UML binary cleanly\nresolves both kernel_strrchr (kernel side, EXPORT_SYMBOL'd) and\nstrrchr@GLIBC_2.2.5 (libc) with no multiple-definition errors.\n\nA small personal note\n=====================\n\nThe last and only patch I sent to LKML was in December 2006 [1], a\ntwo-line fix in the IEEE 802.11 softmac association code during the\ndark days of laptop hardware support.  I have done my best to follow\nthe guidance, especially the recent AI assistance protocols in\nDocumentation/process/coding-assistants.rst and generated-content.rst,\nbut apologize in advance for anything I have done wrong regardless!\n\nPS: see the note below about checkpatch.pl and Assisted-by: behavior.\nI'd be happy to submit a patch for that as well, but suspect an\nexperienced maintainer might prefer to handle it.\n\n[1] https://marc.info/?l=linux-kernel&m=116607116605310&w=2\n\nDisclosure of tool assistance\n=============================\n\nPer Documentation/process/coding-assistants.rst and\ngenerated-content.rst:\n\nTools used: Claude Code with Claude Opus 4.6 (Anthropic); Codex with\nGPT-5.4 (OpenAI).\n\nWhat the tools did: helped reason through the -D macro / glibc C23\nmacro interaction; helped narrow the failure to cow_user.o; suggested\n-Ustrrchr as the minimal override; helped construct the standalone\ngcc reproducer and the build/boot/COW test matrix; helped interpret\nbuild and boot logs; drafted the changelog and this cover letter;\ncross-checked against the glibc 2.43 release notes and the referenced\nkernel/glibc commits; located recent precedent (a74b6c0e53a6) and the\nDocumentation/process/ disclosure guidance; ran checkpatch.pl and\nget_maintainer.pl interactively.\n\nWhat only the author did: manually reviewed every line of patch,\nchangelog, and cover letter; executed every build and boot test on\nthe host (ARCH=um build, bare kernel boot, Debian bookworm rootfs\nboot, COW overlay boot exercising cow_user.c::absolutize());\ninspected the resulting kernel binary, boot logs, and exercised code\npath by hand; made all final scope, framing, recipient,\nand Cc: stable decisions.\n\nThe author has read every line of this submission, understands it,\nand takes full responsibility under the Developer Certificate of\nOrigin.\n\nA note on the Assisted-by: trailers\n-----------------------------------\n\nThe trailers in the patch use the format from\nDocumentation/process/coding-assistants.rst:\n\n  Assisted-by: AGENT_NAME:MODEL_VERSION\n\nscripts/checkpatch.pl in v7.0-rc6 does not yet recognize Assisted-by:\nas a standard signature, so it emits a \"Non-standard signature\" warning\nand (because the value is not a Name <email> pair) an \"Unrecognized\nemail address\" error for each trailer.  These are intentional: the\ntrailer format follows the in-tree documentation, and checkpatch has\nnot yet been updated to match.  Happy to reformat if maintainers\nprefer a different convention.\n\nThanks,\nMichael Bommarito\n\nMichael Bommarito (1):\n  um: drivers: use libc strrchr() in cow_user.o\n\n arch/um/drivers/Makefile | 3 +++\n 1 file changed, 3 insertions(+)\n\n--\n2.49.0"
}