Show a cover letter.

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

{
    "id": 2222561,
    "url": "http://patchwork.ozlabs.org/api/1.2/covers/2222561/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/cover/20260412195947.1982729-1-ravi@prevas.dk/",
    "project": {
        "id": 18,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/18/?format=api",
        "name": "U-Boot",
        "link_name": "uboot",
        "list_id": "u-boot.lists.denx.de",
        "list_email": "u-boot@lists.denx.de",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260412195947.1982729-1-ravi@prevas.dk>",
    "list_archive_url": null,
    "date": "2026-04-12T19:59:39",
    "name": "[0/8] add memdup_nul(), use it and memdup() in a few places",
    "submitter": {
        "id": 89443,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/89443/?format=api",
        "name": "Rasmus Villemoes",
        "email": "ravi@prevas.dk"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/cover/20260412195947.1982729-1-ravi@prevas.dk/mbox/",
    "series": [
        {
            "id": 499629,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/499629/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=499629",
            "date": "2026-04-12T19:59:41",
            "name": "add memdup_nul(), use it and memdup() in a few places",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/499629/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2222561/comments/",
    "headers": {
        "Return-Path": "<u-boot-bounces@lists.denx.de>",
        "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=prevas.dk header.i=@prevas.dk header.a=rsa-sha256\n header.s=selector1 header.b=MddzgLOK;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)",
            "phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=prevas.dk",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=prevas.dk header.i=@prevas.dk header.b=\"MddzgLOK\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=prevas.dk",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=rasmus.villemoes@prevas.dk",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=prevas.dk;"
        ],
        "Received": [
            "from phobos.denx.de (phobos.denx.de [85.214.62.61])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fv1cq0W9Pz1yGg\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 06:00:59 +1000 (AEST)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id D7447841CD;\n\tSun, 12 Apr 2026 22:00:09 +0200 (CEST)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 7894784119; Sun, 12 Apr 2026 22:00:07 +0200 (CEST)",
            "from DB3PR0202CU003.outbound.protection.outlook.com\n (mail-northeuropeazlp170100001.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c200::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id A8B5283F75\n for <u-boot@lists.denx.de>; Sun, 12 Apr 2026 21:59:58 +0200 (CEST)",
            "from AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:681::18)\n by GV2PR10MB9930.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:150:341::22)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Sun, 12 Apr\n 2026 19:59:53 +0000",
            "from AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM\n ([fe80::ebc6:4e0d:5d6b:95d8]) by AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM\n ([fe80::ebc6:4e0d:5d6b:95d8%5]) with mapi id 15.20.9769.046; Sun, 12 Apr 2026\n 19:59:53 +0000"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2",
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=o3sh8PjA1oMvMHoMFf7CMVQgVqmXnVIqayEa+K46xI74LseCVGmlwvU2exaA7Y7Yu6g9QdkopUb50m4vQ5syxYiwMj7V7jiv9usgWlSC3BvZJI0kGEq7zU64XKQ6Bzi6yVaJC+KRMe/IQO3dSvp1SGbSwC4saiuMSqCPLp4BtZNS6EbCDF9EgpzUKE1yL/TgQkPV5NxwEokkMBuMJs4q2RKDCQ40bSB/qW2bmActCwldOmEquqFw4ohDasIxPKd9lm9NvJLusDdxj3oOqJgqCWDJDDLEHpY29Azbc/Ae3EppARwTrXmmUIwAlNnJnZoRDX16qpiVF1EQ/En/T9kK5g==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=MYqP6ZPXz7Gi6V+4J66Fw9IzAwR1csZJl/5h+gGyHT8=;\n b=uvY0oKbrCP/lQCyspvUcDF6WS2Lx7UU8w7cmVbwh5KiJPp+Aj2VBiu5kkOu5r424FVO9jlaQlzirqQicqEiAYbADiq6pq25HzgyGulKSwJ6F/nD8CFYTb6vRNvC/KmL1ZNrlGLTsRnXkefqbsY6FMXeg2gyMqnbZt2d8dp1QExJbrj7B+aHo8DNOJbK4lNntwfLzt2OQlyY7h//VxnuEUDu+/4ZuPatxrsQduf5fbF7+sYEnA0Gdn5QcSAF1Hs0zSLqBHYl9HidFaDofYz1pHqIQY56pKEaK9Z/GFDeeQDOVZOc52VpIoQaHNWVMLoPEwGBRI6rT9iZDcvzTlT8EWw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=prevas.dk; dmarc=pass action=none header.from=prevas.dk;\n dkim=pass header.d=prevas.dk; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=prevas.dk;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=MYqP6ZPXz7Gi6V+4J66Fw9IzAwR1csZJl/5h+gGyHT8=;\n b=MddzgLOKUUW2cgzZ9gROXEsfXOJLdxL8YhzjmmntXJKBP+VCXYeu9yefRr3gZVcEwQ7AYj/TNTUINSRJUd5Mdqc8Z8JMsOVGAJkqkazWKmTixLInKJVyQctGnslVMxjgX9TIspo+zd1szlXdyGNPM/hCEBUn2NGTBdkm0kJ3Njg=",
        "From": "Rasmus Villemoes <ravi@prevas.dk>",
        "To": "u-boot@lists.denx.de",
        "Cc": "Tom Rini <trini@konsulko.com>, Simon Glass <sjg@chromium.org>,\n Rasmus Villemoes <ravi@prevas.dk>",
        "Subject": "[PATCH 0/8] add memdup_nul(), use it and memdup() in a few places",
        "Date": "Sun, 12 Apr 2026 21:59:39 +0200",
        "Message-ID": "<20260412195947.1982729-1-ravi@prevas.dk>",
        "X-Mailer": "git-send-email 2.53.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "CPAP307CA0010.DNKP307.PROD.OUTLOOK.COM (2603:10a6:380:3::9)\n To AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM\n (2603:10a6:20b:681::18)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "AS5PR10MB8243:EE_|GV2PR10MB9930:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "dd0e69b1-9a3a-4db0-5d41-08de98ce103f",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|52116014|376014|1800799024|366016|38350700014|18002099003|56012099003;",
        "X-Microsoft-Antispam-Message-Info": "\n 1sXOXheLPWYnPzZ9n7iHzpYunnfnQEPUSU0kxaZaMQTDJ/CFjKFPsydEwRqsMiLna5uvNZkuVDa/GKCcDH/kCrsxzx6j49VpHGej7rbZkirCkQGmMMKCMqJRHWHt5yNbOOPS7TUylLGscwchn4R0LJABMoSDf9FzJF58ZlbHqmmSmvERGIMRq3tCpwcp4qQrkdnbD0M8xw+6dBHFoBFR8ro8YAEG1p7E+s4Co2YPq/q1YJDw3rp14imsTVtNbx9PGWL7b16QBm1gTbXYiRrCQWojnRfMUcqQV7BXV3JTnxVYFRplzcm78MgfO9ywCrtwExjEV9ty76jC2K0v7ptvjSPodPBGE/IeQ8kXrusZhRe1lLLG8FV41VBUjdWx5JV2aKmfrtP7TjQTEW9ZYcSGvUSHgrcDt44enCIT1vM60kPRXUliB79K5gL1YOIFUNMBJuDQnT9aqtJLodfxlQgaWye0cve+Ki776LUHDrlAvPedafdRZ2dh2WQ6RwBprOmC5XxBgP8hfKOGBO/fvl/DpEY/hI0Xo8+blfmTQl748+nRLNVXmXUTszJNvc5U7uLdJW4zx/HlRU63tn0cwHywvFe3b/fmJk/pLhapGSR0B+1vOPLMHwqCPagPYBZIWO5sapKwdCme0poBh9If5AjasBDotEQv3eyoSlCQxD6GXNcYDQTGVqA3AY75CZmgyS6qVX7RA+nuQ1jfujFP0R0Ok9AdmOAroX1JZKBK0zFaZFzQYHYhyck0vML5ug94b2nW2Crdne45Bhnu0PQ2v7GcdYkZ8NjCiZy3BImXyiTd8uI=",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE;\n SFS:(13230040)(52116014)(376014)(1800799024)(366016)(38350700014)(18002099003)(56012099003);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n Jnr+ssrd0KPMJKgXInSNU68CYIfFP+yMdDcobXgotEeXzNGmEL7KWNnmX+gsKqR0Ion5PvgtqmJstaQzyHiNVQZLfxPE4a+t5Gbfcma3fwC+6h6PZybcb7aMAePxQpTkhcjRU51mUgWH1BgbqkFhnQKgq8wZe7miNbjEk31FjOIx4TWreCstMjSDAEqHJQBjB4vG3T7v8T6/+Ak5bOGld6c1qxDWNoQMhbUgHZ5+8xKARkzRq0eUvY9Mm3pAdOrktktN+kIUIeH3GhXMyT7yv+NqtRPAMcpFcErXFrm9vm92nGMPS3ci7BWSTDiIqzeBI1Nh8I6CGlwJny5spjuezkzlcQFSfqDCBwDUFOAujGmh3stsLvvjre5UhlXOrZc+GLBJh8WnY9kxzrjc3TJPVRbR5hSmYOSI3ocI4IoV/4S28t1I/JTdpqvo42dUf/ZMFucvNjz4RTJUPF3DqVcjrDxBwYyLLXV3VZGAmb100VUPa1BOk8xO8jk6dzVg8qPsePXOxcnzUUcj+xGxCZ76SjLVzbUk14KyPYjPPYCqzf4eHhUHYfjXwNwWO5cu98Z73Pzv3ou/pqtwq/CODBApAmp5W21QdS6RNJY4UyMzeuZA93l9rwk3sp7KEbMdLJbiFt5pTH7Ec8b4NnoujBEY1N7Y3466HyPkIMXAPAdDV0JLk0839R5VTKC8AU7elCnIEZR8qHx2AF8+AGo2j71oC5Lw6Fm4yRgq8jRNF2L9GoScitbyZeUNbJkldJSKvZXhIz3159xZGBejUy1JxzliMdurS85DmB2PPF9lX1IfCuPF4Sk3//7/M10DIRvDwpoUio9C++jgJRIohalXdJwetrTfQ2C0gWbmExj7dq2a/qvbFn8/qifQh0q7EFPm+BDunL2foA0PBshjGdfJpG4TMczdVcP0XjQmBwLxVQl0t+Hwsbgm1xnBE+pdx8m/i0yRLMLoypfopon3cFvwnGBmr0AyVo9sFu/VoNkoMVXC56V+UYG8ZmYyVzDC5zsMyMGsAK6YxK1TEnZXjYhNnurjqxmXQ3CHOd+Eg5GB0ZCYy33QlRn0jHepKGeLcZKwQtPwOyLyVH9+Ey7rijkwIB5mE1byY2Q21Qekx9RUDf1HN3NRPT+UzgG4IHf50luFnVCWGqw1bYhXkfsgZebAsl7HngOJIf0UeZJmStsVPDMzRseIpP6MvlJPMmBTIgHzf18WtTmz+4uM+DQWWqOdfg5AZuYEJ6ZDoIBmvB994PE9daMSL59qN3La6QnlTB2kpiTrVoiglbqsnOhwUfLnuQayoYTH0JFVwy6pgCQFm6MY8k6nXz5m9HxjFTkRp/MGAD/xid1G//LfX+RxnDEuBPicYg8FJ7uuOM4pKWbs7MVzUSpq2vPp8pICRG/QK1InFXuGh5jeaHR5+G71aGsXssD9W91NnCFBSrQZUgfKcPy1ivQWjORH49RDaQ38LbUXXPdycSQewvGbY3/BZpTsY76qJJK8ArTQ60k/zm72J3lufH4FZWkr/m943IOUgrHW6E3g/9v7oa4LcATfH4/VPCraNsPiVFwJE/8L6WE6acaoYhHwEcpsB6bQmqcMJ/2+nT9CagXM7vYZVWfw1gzYdNO0qg5NcvHwofO6n/h/a2nmxlQAUpNLy0r26PHOgs+K3R1i+gJLUC2rGtLVEi/Cao5wXd6pP7eV4bHOBJPjWsydwOR88OwROpxsFk93kv9nwGpAcXf+LoC+StCPH0ZmiEPirOyVyfshJYtSviS+ttVMAic=",
        "X-OriginatorOrg": "prevas.dk",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n dd0e69b1-9a3a-4db0-5d41-08de98ce103f",
        "X-MS-Exchange-CrossTenant-AuthSource": "AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "12 Apr 2026 19:59:53.7737 (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "d350cf71-778d-4780-88f5-071a4cb1ed61",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n 6mnhAwlfdp0zpkyIZ6n9iap3DqGdlyQjuCOGziLcUIv2xDb0UloNhB1WNke0YmsaGZD+aRQ3CpDSrhr0lNR1CW5m83aUb6yO7fS2tvAj2+o=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "GV2PR10MB9930",
        "X-BeenThere": "u-boot@lists.denx.de",
        "X-Mailman-Version": "2.1.39",
        "Precedence": "list",
        "List-Id": "U-Boot discussion <u-boot.lists.denx.de>",
        "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>",
        "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>",
        "List-Post": "<mailto:u-boot@lists.denx.de>",
        "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>",
        "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>",
        "Errors-To": "u-boot-bounces@lists.denx.de",
        "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>",
        "X-Virus-Scanned": "clamav-milter 0.103.8 at phobos.denx.de",
        "X-Virus-Status": "Clean"
    },
    "content": "There are quite a few places where we allocate X+1 bytes, initialize\nthe first X bytes via memcpy() and then set the last byte to 0.\n\nThe kernel has a helper for that, kmemdup_nul(). Introduce a similar\none, and start making use of it in a few places. Also the existing\nmemdup() helper can be put to more use.\n\nThere are lots more places one could modify. But for code shared with\nhost tools, one would need to do some refactoring, putting memdup()\nand memdup_nul() in their own str-util.c TU which could then also be\nincluded in the tools build.\n\nRasmus Villemoes (8):\n  string: fix prototype of memdup()\n  stdio: drop stdio_clone\n  lib/string.c: drop pointless __HAVE_ARCH_STRDUP\n  lib/string.c: introduce memdup_nul() helper\n  lib/string.c: implement strdup() and strndup() in terms of\n    memdup_nul()\n  lib/hashtable.c: use memdup_nul() in himport_r\n  common/cli.c: use memdup_nul() in run_command_list()\n  drivers/core: use memdup() instead of malloc()+memcpy()\n\n common/cli.c           |  4 +---\n common/stdio.c         | 18 +--------------\n drivers/core/acpi.c    |  3 +--\n drivers/core/ofnode.c  |  3 +--\n drivers/core/root.c    |  3 +--\n include/linux/string.h | 18 ++++++++++++---\n include/stdio_dev.h    |  1 -\n lib/hashtable.c        |  7 +++---\n lib/string.c           | 51 +++++++++++++++---------------------------\n 9 files changed, 41 insertions(+), 67 deletions(-)"
}