{"id":2225568,"url":"http://patchwork.ozlabs.org/api/1.2/covers/2225568/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/cover/20260421075439.16696-1-ravi@prevas.dk/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.2/projects/18/?format=json","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":"<20260421075439.16696-1-ravi@prevas.dk>","list_archive_url":null,"date":"2026-04-21T07:54:30","name":"[v2,0/9] 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=json","name":"Rasmus Villemoes","email":"ravi@prevas.dk"},"mbox":"http://patchwork.ozlabs.org/project/uboot/cover/20260421075439.16696-1-ravi@prevas.dk/mbox/","series":[{"id":500753,"url":"http://patchwork.ozlabs.org/api/1.2/series/500753/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=500753","date":"2026-04-21T07:54:32","name":"add memdup_nul(), use it and memdup() in a few places","version":2,"mbox":"http://patchwork.ozlabs.org/series/500753/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/2225568/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=Ezh12DNb;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; 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=\"Ezh12DNb\";\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\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\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 4g0F5S6k1zz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 21 Apr 2026 17:55:24 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 6008784372;\n\tTue, 21 Apr 2026 09:55:07 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 4D9AC84374; Tue, 21 Apr 2026 09:55:05 +0200 (CEST)","from GVXPR05CU001.outbound.protection.outlook.com\n (mail-swedencentralazlp170130007.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c202::7])\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 C865A84258\n for <u-boot@lists.denx.de>; Tue, 21 Apr 2026 09:55:00 +0200 (CEST)","from AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:681::18)\n by GV2PR10MB6233.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:150:78::14)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Tue, 21 Apr\n 2026 07:54:51 +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%6]) with mapi id 15.20.9846.016; Tue, 21 Apr 2026\n 07:54:51 +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_NONE,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=r33Z+XzCMcqBwTTxasapF+b1c823lPVjYWmVnD7ncldHUlr/8wh4o7rSQgInsWfTuL5YImXwvNa45FyzEIOWQThfxouqf+U+uUSpyO4yvkcodbm6qmSyUrEKy3XYkS/1PnhpGUwqiglrHBBnOB4cp/J+GG42qVEAyYzuMMPf2Oj99PFMT76FCVFebDWw3ktIh33U6x06GH40mXuowQkRHXogWlaA3vlmPZmdN/lOVxqrHfkpjohkQp8TQMs8/qxgaEZlvfu7rzYlY9+cawb72GjYSAEu2JlxRlaV8EVeiLQdFzdfj0LknJC2MVGa+BosEApZiDfh24OE2+OraHA+dg==","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=GcIG5JjE0LoqGPJvCOcFjDnp0IANj3N15d1tEwQsv2E=;\n b=eyUN5ZWIBZIpLO5fBc2Tl1fl5ZWbJVVG2hltYfEI1A2+HjhIfCXzqaS7Y4nMaS2oosOKdUXqIiXo2ZRfAaUYjyo1IhmpkMAiKiAAXB+zGDewGEeTh04BOuG8IBtyWB9SVSxb95hSrG9UJ9kbiFn0Sd1qqDWkeSQGWRi+NU7lmEGnqmh0X2DuaK3J3vhfWVZOLvr/Y90/QWhpvNJYmQs+5LBWg7cPGM5BC+DP3akJGdJb4/at5neBFmGvjs1H51BiGURkInh+5CDKwGOylrifUFZoEo75UsWBRdHNvW0R4zU7ICAYDisoEx1JYg9znnRMV78PlUFBdoFHrfvx20hQvw==","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=GcIG5JjE0LoqGPJvCOcFjDnp0IANj3N15d1tEwQsv2E=;\n b=Ezh12DNbkNJS68VqS91lrDjoOaiqitoimwF1QTtI0Y66CbkUC0jyOYYGwzjsIkNNgLIV2Ki445TGuslai3JZByYvHdvwPu9qECkJ5RC08B8obgDV0XbZ+RsvTX/zkvgKgZKVR4bup8LpPnVGviunxHUZTUQdi7/UQs05YmK4XWk=","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 v2 0/9] add memdup_nul(), use it and memdup() in a few places","Date":"Tue, 21 Apr 2026 09:54:30 +0200","Message-ID":"<20260421075439.16696-1-ravi@prevas.dk>","X-Mailer":"git-send-email 2.53.0","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"GVX0EPF0005F697.SWEP280.PROD.OUTLOOK.COM\n (2603:10a6:158:400::12d) 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_|GV2PR10MB6233:EE_","X-MS-Office365-Filtering-Correlation-Id":"91fe56c2-5c95-4ba4-f227-08de9f7b4443","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|366016|52116014|376014|1800799024|38350700014|56012099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n gRQZ+j61PmYr+3i8fJl2U9VeYBAcCplCvG1y1EPgJJKVdqZq68Ig3kCnM7A6f6y59hlsFTBjd8hglbgfQbgLKn4OqaSJTqImfGpchKT2QjLEXLuGKeld59j/lEjApxv5UIaJr9hgVPCtC7Q+gaYwqbIgOS/C8P60yCoJ++jFoKqYfhs4ySOpbTekSyLQio1U4+FcKxIaO6YIAtxKHkQPelIV03Kgp4BPZO68RRNdniSlNXrJj1ismgxbSJoj7kxreSOTbQGyM5Zni739NNH1uJUMtOCcIwtY6659PCv+TkrinLbGub+fJ8bQU4HvzYCAw4Hp6xm0meZV9byyd60ajgjsFVkxXwwxosTc813mCe20f4m0wIeVIms9dnVoOtZFR91wAbE/JIytonuuxaJdGi2viFKaEtDb6ewdGhYIFtumA1HuH+j31N6IimfJ+BtL7Ir0SbTnV8zMDm6iKxgc/NDYiA86JR0W/B7DsJZmR0QU9Dse7QNS/xZZP/W+IO/fUFwgfBjUYgYbNDwu5JMvDTCz9DERYWj/63Ir3CI969kV6PBDgxbAnYmRja86NeJR7OZzPhOk52jmJrMR/UPYv3t8e0Js1SCWnmYy+9Ny4s97DqbDcl5PNPQ7EAfzAbSIJLv77bK9+SAe4IYfPxspXJmNxjyhj60wNaiHk/d8yondL70/9khwFBZhuGMp3rxO2k8hhPRQSAL/ZBPcPTl3Z60CZjB7iv13SVbUsXpZv1evoc1IMQMkU2OAqjXoW/m7rqCbONlkzZo7e2zmKd1UIAsAYEzDIr2dvzhcJp+TbHw=","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)(366016)(52116014)(376014)(1800799024)(38350700014)(56012099003)(18002099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n KDzhX5+S1XR+SVZGqLdJrjaYWPnRohdeFvGhijWzxCNq1GPXpucMmLusToMwilc3HYVroaHe9Xp+p2TUNE4+xk9MOxlSfY6MGfHQxfYGeZOSsfCbOUoy7GgbRypBR/aJdIOh48IfmYhjNE3OW3MXHsuWxVb/PTlyQSffSQPlDf7UqF9RQoQLHDg42OIzBN/lEqfd4ql+tpHF+intvDvKfnixvPJNJCTTD7Zep9lc26BRrwhll9U0i3nPnrbABfEOQE1Re/bsk4UFv3BxJwed9eI66QOA1P78yYAd3Gr8EMTgyg+8+ea2J4wkAdfGKUT/uy1S+rJsfLTbkP7XUGk/r2Xu9hKBPyHSPcnxwaDkYreX/ngZo9TEfgQ3OxuhGiWRMi7IbqPKxSMgNa4dIRcC/veOy2FUj2PWN5zbUiFKLXf62gsOf25YHzeFm8xXfUZ6jTdE1cXDkNxhqEW4TMjcrf13pUpeaotH86WVMOuWmilFj+Nz2inntXNZSNlB7ikjhrJsBxpsuIqkXln7RVD+u/c1JcxSu+YDZ/mArqf6rpYkYRvKQiy+GQdHWt0QNOPf9bT7S92ZVF/pYdAzt/tL9ADxFQSjHQeG24860t2qJFM3B7enQH3KLr9ueYdUqR6l/XAqYH50JVXFCu3JSp3Ai/TkfOYB5i1wwA4BU3AGXvzGYmpzVgy2SeKijsNWsYwE4XWLZr5roMLOBUXX+UXiEeopbtVv3p6E50PvKIU2unqbAvRS9frvkbapD9cXK8plkKrdZl9/p3HFujziaIXR8YU5muV1RIh/L642S8kgYbZWdEXQcMy9KvC4yb+ZwsfA6l9TD1SZkKElM2F64XNefIgOMoWwTZgrCoir+iR0yOqYgRTvNjoqQStNAtHmIhqZnC2YY6FM+KlNe/DgttU4oaTYWze12nxh2SYDszaKLYB82ybmcK9XSeXGhIdEWqZ0tlZlO0IUINTyY2mmsNCCdb5D+l9I5VXtSVXrvTo4gKq0on0Hlk67/07vCH8RItzAzrn2We/8fZABfkAoMZQWOlDFz609sZFfjl6Hg2Zq2SxK5KRiK3MNebf0qpctNesEuTjYbwO9rVxxA250yrbspzo2yPxea/laox7VeMez0mgiaSczKEGcHKV8O2iEYRBanlqPcm9Ey1L+bJ9kB38Y/rE7KvqEIIrtlVG1Ux1pAfWWpcB6j0JQ/m8jwckKU4yMWWmAA/p+XzVoIHrVof4MC1iY7XdrTHpY10VFJjEvvx8RTBhO83yogdiS/6WE3E9bjAhVQJT7N8+HMPNPWxc/PRrSZYvjfjoTm55fJWjctBljLxP1jBiAY0laKgGe0TP9AlVnSCEWv2aCtopSSPOm/kE2OgR3ucog9ZoZKZyhn2dnxCVSHBHnTMyU4RPlkLB47JnICXtzKpUdVFrecU2RWeEHbzyMKYGF27yNg7QScYOe7y1SfnxKNzHigc4owB19IBMY86Y/6+9irjVPAJYcYHKjqsCv3l/onu7sgBYCl5W219xmiljSdwWiPTd12NA7d/LjS51ZTlgwq0OJkjCShTj6f0spdfS5dmvSM65jpKQ9UHF2y2+hGpls5MFvKAauU4OhLEXO0ZNILRNyZQ75+4P/wY5ASN1GW1DgglASJaEdTktKebVa7DX78NAlGKPc8WraLlhVWbvff5O7l0X+00lD3xYk+7Y1fGEXhQXPhIhOOLcTSBcK0mbOjo2LsB0EVv+h+uYCTTQCe3A4+CaFG8nIKYF5pxveK4fqVg7UgPc=","X-OriginatorOrg":"prevas.dk","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 91fe56c2-5c95-4ba4-f227-08de9f7b4443","X-MS-Exchange-CrossTenant-AuthSource":"AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"21 Apr 2026 07:54:51.0331 (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 w8ebnQhUXH1Gihnf7xx2gmJ90re8K8DdIUfnrCVK2sxUtKeJma1tIJI1SAjJ/6SHr4uW0gosDLNc3+TqTehx3iF7q4ecn9mXkQgiTKR4SN4=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"GV2PR10MB6233","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\nv2: Fix grammar in commit msg, add Simon's R-B to patches 1-8, add\ntest (new patch 9).\n\nv1: https://lore.kernel.org/u-boot/20260412195947.1982729-1-ravi@prevas.dk/\n\nRasmus Villemoes (9):\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  test: lib: add test of memdup_nul()\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 test/lib/string.c      | 34 ++++++++++++++++++++++++++++\n 10 files changed, 75 insertions(+), 67 deletions(-)"}