[{"id":3679210,"web_url":"http://patchwork.ozlabs.org/comment/3679210/","msgid":"<CAFLszTjpyaqAASy8na9jBLLz_E=A59PBTSrq8KMvLu7ab8=8kA@mail.gmail.com>","list_archive_url":null,"date":"2026-04-20T04:06:49","subject":"Re: [PATCH v3 5/7] mkimage: add fatfs image type for FAT partition\n images","submitter":{"id":6170,"url":"http://patchwork.ozlabs.org/api/people/6170/","name":"Simon Glass","email":"sjg@chromium.org"},"content":"Hi Aswin,\n\nOn 2026-04-17T12:09:44, Aswin Murugan <aswin.murugan@oss.qualcomm.com> wrote:\n> mkimage: add fatfs image type for FAT partition images\n>\n> Add a new mkimage image type 'fatfs' that creates a raw FAT\n> filesystem partition image from a directory of files.\n>\n> The image handler (fatimage.c) uses mkfs.vfat (dosfstools)\n> to format the image and mcopy (mtools) to populate it. The\n> image size is calculated automatically from the input\n> directory size plus FAT metadata overhead.\n>\n> New long options added to mkimage:\n>   --fat-extra-space <KB>  extra padding (default: 512 KB)\n>   --fat-type <0|12|16|32> FAT type (0 = auto-detect)\n>   --fat-volume-id <label> volume label (default: BOOT)\n>   --fat-mkfs-opts <opts>  extra mkfs.vfat options\n>\n> Usage:\n>   mkimage -T fatfs -d <input-dir> \\\n>       --fat-extra-space 512 \\\n>       --fat-volume-id \"MYBOOT\" \\\n> [...]\n>\n> tools/Makefile   |   1 +\n>  tools/fatimage.c | 495 +++++++++++++++++++++++++++++++++++++++++++++++++++++++\n>  tools/fatimage.h |  25 +++\n>  tools/mkimage.c  |  21 +++\n>  tools/mkimage.h  |  15 ++\n>  5 files changed, 557 insertions(+)\n\n> diff --git a/tools/mkimage.c b/tools/mkimage.c\n> @@ -204,6 +204,10 @@ static const struct option longopts[] = {\n> +{ \"fat-extra-space\", required_argument, NULL, OPT_FAT_EXTRA },\n> +     { \"fat-type\", required_argument, NULL, OPT_FAT_TYPE },\n\nThe first line is missing its leading tab.\n\n> diff --git a/tools/fatimage.c b/tools/fatimage.c\n> @@ -0,0 +1,495 @@\n> +static int fatimage_set_header(void *ptr, struct stat *sbuf, int ifd,\n> +                            struct image_tool_params *params)\n\nThe set_header callback in struct image_type_params returns void, not int\n\nAssuming you don't want to update that (which you might?), please\nchange the return type to void and call exit() on unrecoverable\nerrors, like the other image handlers.\n\n> diff --git a/tools/fatimage.c b/tools/fatimage.c\n> @@ -0,0 +1,495 @@\n> +static int fatimage_check_params(struct image_tool_params *params)\n> +{\n> +     if (!fatparams.input_dir) {\n> +             fprintf(stderr, \"Error: Input directory not specified\\n\");\n> +             fprintf(stderr, \"Use -d <directory> to specify input directory\\n\");\n> +             return -1;\n> +     }\n> +\n> +     struct stat st;\n> +     if (stat(fatparams.input_dir, &st) < 0) {\n\nPlease move the decl to the start to the top of the function.\n\n> diff --git a/tools/fatimage.c b/tools/fatimage.c\n> @@ -0,0 +1,495 @@\n> +void fatimage_set_dir(const char *dir)\n> +{\n> +     fatparams.input_dir = strdup(dir);\n> +}\n> +\n> +void fatimage_set_extra_space(int space_kb)\n> +{\n> +     fatparams.extra_space = space_kb;\n> +}\n> +\n> +void fatimage_set_fat_type(int type)\n> +{\n> +     fatparams.fat_type = type;\n> +}\n> +\n> +void fatimage_set_volume_id(const char *volid)\n> +{\n> +     fatparams.volume_id = strdup(volid);\n> +}\n> +\n> +void fatimage_set_mkfs_opts(const char *opts)\n> +{\n> +     fatparams.mkfs_opts = strdup(opts);\n> +}\n\nThe strdup() calls in fatimage_set_dir(), fatimage_set_volume_id() and\nfatimage_set_mkfs_opts() can return NULL, but the return value is not\nchecked. Please check for NULL and handle the error.\n\nRegards,\nSimon","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=chromium.org header.i=@chromium.org header.a=rsa-sha256\n header.s=google header.b=YGfUij27;\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=none dis=none) header.from=chromium.org","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=chromium.org header.i=@chromium.org\n header.b=\"YGfUij27\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=chromium.org","phobos.denx.de;\n spf=pass smtp.mailfrom=sjg@chromium.org"],"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 4fzX4y3Pryz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 20 Apr 2026 14:07:30 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id A747D80433;\n\tMon, 20 Apr 2026 06:07:21 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 4FF6E80433; Mon, 20 Apr 2026 06:07:20 +0200 (CEST)","from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com\n [IPv6:2a00:1450:4864:20::62b])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 57893842B7\n for <u-boot@lists.denx.de>; Mon, 20 Apr 2026 06:07:18 +0200 (CEST)","by mail-ej1-x62b.google.com with SMTP id\n a640c23a62f3a-ba61a0a2d26so192934666b.2\n for <u-boot@lists.denx.de>; Sun, 19 Apr 2026 21:07:18 -0700 (PDT)"],"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,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; t=1776658038; cv=none;\n d=google.com; s=arc-20240605;\n b=Y6a3QBmrLO5Z2W0NXMAE021su5rYRCwf56taANEW2JOH9n2J04dY5JzWmSS3jmg3Kl\n BV+OIxg2aghFPN54j8ZXAGvuQm5jMkYryDHcZhYlJNmhOaXLy3xSXdIRkngRH7R6cPd4\n XvLE2NaTlRdf5tNkQoz8WepxRXtxCMyljFNgc5PvyVQLo2+dRUmiszAFM2ykv0gLjKuP\n 6TysWhhTTvLkLhjWNOmeMu6mnh9p6wPVGQAwC94HYVuP8Wp/5y7B6TAVqrvyusscANWb\n s3qYZNiSjQ2pVtEqPVuBhsheqk5Xi2hcRr8+RZ83qyzQdi7Vn9L2/CPUsEYanyMkDvfo\n 8sdw==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:dkim-signature;\n bh=4cNvyEEqka9r2pXqVpTQyvF520G1iLz8eLpi1EN1Rw4=;\n fh=dFCcCirmpEm4IniOCIHShPK6RefQ43DR32oEpS3whgs=;\n b=g3/su6tsK9lr9fDtz01+4/IjHFo196W0baBkOCY4VJC6DbC2zR/CMiyLapWjCx0opr\n 81olf7ssSZkma8tgNMKnH+XRTo7aZX1leOscf2vGss5/TyXa+oTtl18LRPdAS268C0d/\n VGnvy8n6j28SeowANgW9zJWrY72a9Gmmnk0Uz3qoawFLRZuFl+H0S7B24eHRZnNcbNnr\n TYT3B9FX8r3mvRQO+IZ5baYY1byu8R4VtTrHlYsjJSJLA5jHHuh6j/GMW486Y3UmBjkH\n JAWQ1mFZ3sjNJ6p2LhYHNMxbLJXnBwX+3xlGw5XnJ1haXvZ75F004RH8T68qgru31XQ9\n GI1g==; darn=lists.denx.de","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=chromium.org; s=google; t=1776658038; x=1777262838; darn=lists.denx.de;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:from:to:cc:subject:date:message-id:reply-to;\n bh=4cNvyEEqka9r2pXqVpTQyvF520G1iLz8eLpi1EN1Rw4=;\n b=YGfUij27GSYCzL/jaXMGvf0pbzf3x3n7CYmBzgv8wpP+pJYAtil1eg3PrKxhuWCsHS\n 4BahJ7yC9/0LCVtKMk8XTwolnwQPzMP1r7jSTBNFz05sFgqIB0A9kIRbmzQkd1invYXm\n m19Wh3nCmn61i8m3dSGqMGjU5hj9OX9w/oGlI=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776658038; x=1777262838;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=4cNvyEEqka9r2pXqVpTQyvF520G1iLz8eLpi1EN1Rw4=;\n b=ns/2y4AtNIZkXZ3RCyMzm1cN5qDSsqZKUgtHMAN/oEa9I49d77BTkuSTCJ5/NpVKjl\n BdCP6688r/cVBomdnncmYxGCc6ayZtJqZEm0HltwWtCg9bTIPzKScZ6xiIcQ5bcGsH9q\n aSfqHqqqC0WPDCxFrAQ6oXP0GTsGEFyw01hiOxfitLI60qb4D+7Gnm6Np4d1BZ/i+yt5\n 4DqZnrkMiR1qDECN3oNwCxBsiFDWuZgwHrNXhyq3Wvst3EfR59EMWJAIyG4rabEDI248\n TB+v2lulXBgOYhjJRgoiE7TxmB2EYm567lsPmATapdRRoXMF22jrI/i3z+Mz9HIrkH7P\n XygQ==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+KPg6MwU96HXS+QkLtFokGPwng0o7JH5RUjFu+VmWVSROW7wBL2NI19B3kRckj+DRiONgv4NI=@lists.denx.de","X-Gm-Message-State":"AOJu0YxA1q2wJg9hs8JhgMIUxY1Z1Fi/KA3Ta+9P4x549oeGgd1z29F6\n 4vKWSS5flTVWYRPeiWUOeb0voy9IxsoCQnTXBdII4xnsNYbga9Ilnpff1rtL2ngWanhUWemZ2/N\n 6WOaMR5o20X37NQFrS25ZxsSscqz8YMKyG5hU16Gf","X-Gm-Gg":"AeBDies/6GiWGSVrV03BQfCf+y+IewBOwF854OItllgJ2lS2id4K6LF7XGSEG/UcCIT\n fEL2QKvAkk6yYnajsx2wq0FdbQDK8QqmGD1CZjt+zbfDpTSeIlQkJThc56OgkKtBILf/6tbKAsx\n i6cnjI6oAy3u3RXJSNNb8JGHWn9TkIR9eyc77hsBezZqMifdvltEJUcHQHPL0Gio7DXLj5u6OGk\n OVSOorgtm6jGjUJXOlKUV1EEwRJhgwPUK1i+dDgwznLxkY1xFZZT0YzWNZOCRFIKPqZjC346Zrk\n TgRCc0E1s9xPxL/MJqdX","X-Received":"by 2002:a17:907:9729:b0:b8f:b32e:e196 with SMTP id\n a640c23a62f3a-ba41a6339f0mr495218366b.30.1776658037621; Sun, 19 Apr 2026\n 21:07:17 -0700 (PDT)","MIME-Version":"1.0","References":"<20260417120951.3454249-1-aswin.murugan@oss.qualcomm.com>\n <20260417120951.3454249-6-aswin.murugan@oss.qualcomm.com>","In-Reply-To":"<20260417120951.3454249-6-aswin.murugan@oss.qualcomm.com>","From":"Simon Glass <sjg@chromium.org>","Date":"Mon, 20 Apr 2026 16:06:49 +1200","X-Gm-Features":"AQROBzD83hkiiO4d8s-oqR9AXmZ9KjULuYTMNQJxlrcB-_m4D_8G0mh0Fwnw8PI","Message-ID":"\n <CAFLszTjpyaqAASy8na9jBLLz_E=A59PBTSrq8KMvLu7ab8=8kA@mail.gmail.com>","Subject":"Re: [PATCH v3 5/7] mkimage: add fatfs image type for FAT partition\n images","To":"aswin.murugan@oss.qualcomm.com","Cc":"trini@konsulko.com, casey.connolly@linaro.org, neil.armstrong@linaro.org,\n sumit.garg@kernel.org, sughosh.ganu@arm.com, ilias.apalodimas@linaro.org,\n gchan9527@gmail.com, mchitale@ventanamicro.com, maximmosk4@gmail.com,\n jonas@kwiboo.se, marek.vasut@mailbox.org, quentin.schulz@cherry.de,\n peng.fan@nxp.com, sajattack@postmarketos.org,\n balaji.selvanathan@oss.qualcomm.com, wolfgang.wallner@at.abb.com,\n e@freeshell.de, yangshiji66@outlook.com, jan.kiszka@siemens.com,\n funderscore@postmarketos.org, hs@nabladev.com, kory.maincent@bootlin.com,\n jj251510319013@gmail.com, carlos.lopezr4096@gmail.com, u-boot-qcom@groups.io,\n u-boot@lists.denx.de","Content-Type":"text/plain; charset=\"UTF-8\"","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"}}]