All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex G." <mr.nuke.me@gmail.com>
To: Simon Glass <sjg@chromium.org>,
	U-Boot Mailing List <u-boot@lists.denx.de>
Cc: Andre Przywara <andre.przywara@arm.com>,
	Rasmus Villemoes <rasmus.villemoes@prevas.dk>,
	Robert Marko <robert.marko@sartura.hr>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Tom Rini <trini@konsulko.com>,
	Joe Hershberger <joe.hershberger@ni.com>,
	Marek Vasut <marex@denx.de>
Subject: Re: [PATCH v5 11/29] image: Use the correct checks for CRC32
Date: Tue, 5 Oct 2021 13:34:58 -0500	[thread overview]
Message-ID: <84560f5e-eb67-edcb-8f96-19aa990a6bbd@gmail.com> (raw)
In-Reply-To: <20210925194327.v5.11.I5ba26e911d0ffff8af74ec113d11a5421b0c009f@changeid>



On 9/25/21 8:43 PM, Simon Glass wrote:
> Add a host Kconfig for CRC32. With this we can use CONFIG_IS_ENABLED(CRC32)
> directly in the host build, so drop the unnecessary indirection.
> 
> Add a few more conditions to SPL_CRC32 to avoid build failures as well as
> TPL_CRC32. Also update hash.c to make crc32 optional and to actually take
> notice of SPL_CRC32.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

I'm not entirely convinced, but it does make CRC32 more consistent with 
other hashes.

Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>

> ---
> 
> Changes in v5:
> - Rebase to next
> - Use TOOLS_ instead of HOST_
> 
>   common/hash.c      | 13 ++++++++-----
>   common/spl/Kconfig | 13 ++++++++++++-
>   lib/Kconfig        |  5 +++++
>   lib/Makefile       |  4 +---
>   tools/Kconfig      |  5 +++++
>   5 files changed, 31 insertions(+), 9 deletions(-)
> 
> diff --git a/common/hash.c b/common/hash.c
> index e92f9a9594f..b4b01c193b6 100644
> --- a/common/hash.c
> +++ b/common/hash.c
> @@ -178,7 +178,7 @@ static int hash_finish_crc16_ccitt(struct hash_algo *algo, void *ctx,
>   	return 0;
>   }
>   
> -static int hash_init_crc32(struct hash_algo *algo, void **ctxp)
> +static int __maybe_unused hash_init_crc32(struct hash_algo *algo, void **ctxp)
>   {
>   	uint32_t *ctx = malloc(sizeof(uint32_t));
>   	*ctx = 0;
> @@ -186,15 +186,16 @@ static int hash_init_crc32(struct hash_algo *algo, void **ctxp)
>   	return 0;
>   }
>   
> -static int hash_update_crc32(struct hash_algo *algo, void *ctx,
> -			     const void *buf, unsigned int size, int is_last)
> +static int __maybe_unused hash_update_crc32(struct hash_algo *algo, void *ctx,
> +					    const void *buf, unsigned int size,
> +					    int is_last)
>   {
>   	*((uint32_t *)ctx) = crc32(*((uint32_t *)ctx), buf, size);
>   	return 0;
>   }
>   
> -static int hash_finish_crc32(struct hash_algo *algo, void *ctx, void *dest_buf,
> -			     int size)
> +static int __maybe_unused hash_finish_crc32(struct hash_algo *algo, void *ctx,
> +					    void *dest_buf, int size)
>   {
>   	if (size < algo->digest_size)
>   		return -1;
> @@ -311,6 +312,7 @@ static struct hash_algo hash_algo[] = {
>   		.hash_update	= hash_update_crc16_ccitt,
>   		.hash_finish	= hash_finish_crc16_ccitt,
>   	},
> +#if CONFIG_IS_ENABLED(CRC32)
>   	{
>   		.name		= "crc32",
>   		.digest_size	= 4,
> @@ -320,6 +322,7 @@ static struct hash_algo hash_algo[] = {
>   		.hash_update	= hash_update_crc32,
>   		.hash_finish	= hash_finish_crc32,
>   	},
> +#endif
>   };
>   
>   /* Try to minimize code size for boards that don't want much hashing */
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index 34f6fc2cfad..91bb6c89fb4 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -419,7 +419,8 @@ config SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
>   
>   config SPL_CRC32
>   	bool "Support CRC32"
> -	default y if SPL_LEGACY_IMAGE_SUPPORT
> +	default y if SPL_LEGACY_IMAGE_SUPPORT || SPL_EFI_PARTITION
> +	default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
>   	help
>   	  Enable this to support CRC32 in uImages or FIT images within SPL.
>   	  This is a 32-bit checksum value that can be used to verify images.
> @@ -1419,6 +1420,16 @@ config TPL_BOOTROM_SUPPORT
>   	  BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
>   	  boot device list, if not implemented for a given board)
>   
> +config TPL_CRC32
> +	bool "Support CRC32 in TPL"
> +	default y if TPL_ENV_SUPPORT || TPL_BLOBLIST
> +	help
> +	  Enable this to support CRC32 in uImages or FIT images within SPL.
> +	  This is a 32-bit checksum value that can be used to verify images.
> +	  For FIT images, this is the least secure type of checksum, suitable
> +	  for detected accidental image corruption. For secure applications you
> +	  should consider SHA1 or SHA256.
> +
>   config TPL_DRIVERS_MISC
>   	bool "Support misc drivers in TPL"
>   	help
> diff --git a/lib/Kconfig b/lib/Kconfig
> index 64765acfa61..70bf8e7a464 100644
> --- a/lib/Kconfig
> +++ b/lib/Kconfig
> @@ -496,6 +496,11 @@ config SPL_MD5
>   	  security applications, but it can be useful for providing a quick
>   	  checksum of a block of data.
>   
> +config CRC32
> +	def_bool y
> +	help
> +	  Enables CRC32 support in U-Boot. This is normally required.
> +
>   config CRC32C
>   	bool
>   
> diff --git a/lib/Makefile b/lib/Makefile
> index 9c0373e2955..c523bb74119 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -99,9 +99,7 @@ obj-y += display_options.o
>   CFLAGS_display_options.o := $(if $(BUILD_TAG),-DBUILD_TAG='"$(BUILD_TAG)"')
>   obj-$(CONFIG_BCH) += bch.o
>   obj-$(CONFIG_MMC_SPI) += crc7.o
> -#ifndef CONFIG_TPL_BUILD
> -obj-y += crc32.o
> -#endif
> +obj-$(CONFIG_$(SPL_TPL_)CRC32) += crc32.o
>   obj-$(CONFIG_CRC32C) += crc32c.o
>   obj-y += ctype.o
>   obj-y += div64.o
> diff --git a/tools/Kconfig b/tools/Kconfig
> index 8685c800f93..91ce8ae3e51 100644
> --- a/tools/Kconfig
> +++ b/tools/Kconfig
> @@ -9,6 +9,11 @@ config MKIMAGE_DTC_PATH
>   	  some cases the system dtc may not support all required features
>   	  and the path to a different version should be given here.
>   
> +config TOOLS_CRC32
> +	def_bool y
> +	help
> +	  Enable CRC32 support in the tools builds
> +
>   config TOOLS_LIBCRYPTO
>   	bool "Use OpenSSL's libcrypto library for host tools"
>   	default y
> 

  reply	other threads:[~2021-10-05 18:35 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-26  1:43 [PATCH v5 00/29] image: Reduce #ifdefs and ad-hoc defines in image code (Part B) Simon Glass
2021-09-26  1:43 ` [PATCH v5 01/29] compiler: Rename host_build() to tools_build() Simon Glass
2021-10-05 18:09   ` Alex G.
2021-10-09  1:39   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 02/29] kconfig: Add tools support to CONFIG_IS_ENABLED() Simon Glass
2021-09-27 16:11   ` Alex G.
2021-09-27 16:50     ` Masahiro Yamada
2021-09-27 20:17       ` Simon Glass
2021-09-27 20:17     ` Simon Glass
2021-10-05 18:11   ` Alex G.
2021-10-07  0:26   ` Tom Rini
2021-10-07  2:49     ` Simon Glass
2021-10-07  2:52       ` Tom Rini
2021-10-07 13:32         ` Simon Glass
2021-10-07 13:42           ` Tom Rini
2021-10-07 18:02             ` Simon Glass
2021-10-07 18:30               ` Tom Rini
2021-10-07 18:50                 ` Simon Glass
2021-10-07 19:32                   ` Alex G.
2021-10-07 19:39                     ` Tom Rini
2021-10-07 20:33                       ` Alex G.
2021-10-07 21:04                         ` Tom Rini
2021-10-07 21:15                           ` Alex G.
2021-10-09  1:39   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 03/29] image: Add Kconfig options for FIT in the tools build Simon Glass
2021-10-05 18:17   ` Alex G.
2021-10-05 18:17   ` Alex G.
2021-10-09  1:39   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 04/29] spl: cypto: Bring back SPL_ versions of SHA Simon Glass
2021-10-05 18:19   ` Alex G.
2021-10-09  1:39   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 05/29] hash: Use Kconfig to enable hashing in host tools and SPL Simon Glass
2021-09-27 15:53   ` Alex G.
2021-09-27 16:06     ` Simon Glass
2021-09-27 16:12       ` Alex G.
2021-10-05 18:21   ` Alex G.
2021-10-09  1:39   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 06/29] hash: Drop some #ifdefs in hash.c Simon Glass
2021-10-05 18:24   ` Alex G.
2021-10-09  1:39   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 07/29] image: Drop IMAGE_ENABLE_FIT Simon Glass
2021-10-05 18:26   ` Alex G.
2021-10-09  1:39   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 08/29] image: Drop IMAGE_ENABLE_OF_LIBFDT Simon Glass
2021-10-05 18:27   ` Alex G.
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 09/29] image: Use Kconfig to enable CONFIG_FIT_VERBOSE on host Simon Glass
2021-10-05 18:29   ` Alex G.
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 10/29] image: Use Kconfig to enable FIT_RSASSA_PSS " Simon Glass
2021-10-05 18:32   ` Alex G.
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 11/29] image: Use the correct checks for CRC32 Simon Glass
2021-10-05 18:34   ` Alex G. [this message]
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 12/29] image: Drop IMAGE_BOOT_GET_CMDLINE Simon Glass
2021-10-05 18:36   ` Alex G.
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 13/29] image: Drop IMAGE_OF_BOARD_SETUP Simon Glass
2021-10-05 18:57   ` Alex G.
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 14/29] image: Drop IMAGE_OF_SYSTEM_SETUP Simon Glass
2021-10-05 18:58   ` Alex G.
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 15/29] image: Drop IMAGE_ENABLE_IGNORE Simon Glass
2021-10-05 18:58   ` Alex G.
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 16/29] efi: Correct dependency on FIT_SIGNATURE Simon Glass
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 19/29] image: Tidy up fit_unsupported_reset() Simon Glass
2021-10-09  1:40   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 20/29] image: Drop unnecessary #ifdefs from image.h Simon Glass
2021-10-09  1:41   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 21/29] image: Drop #ifdefs for fit_print_contents() Simon Glass
2021-10-09  1:41   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 22/29] image: Drop most #ifdefs in image-board.c Simon Glass
2021-10-09  1:41   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 23/29] image: Reduce variable scope in boot_get_ramdisk() Simon Glass
2021-10-09  1:41   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 24/29] image: Split up boot_get_ramdisk() Simon Glass
2021-10-09  1:41   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 25/29] image: Remove #ifdefs from select_ramdisk() Simon Glass
2021-10-09  1:41   ` Tom Rini
2021-12-17 17:40     ` Neil Armstrong
2021-09-26  1:43 ` [PATCH v5 26/29] image: Remove some #ifdefs from image-fit and image-fit-sig Simon Glass
2021-10-09  1:41   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 27/29] image: Reduce variable scope in boot_get_fdt() Simon Glass
2021-10-09  1:41   ` Tom Rini
2021-09-26  1:43 ` [PATCH v5 28/29] image: Split up boot_get_fdt() Simon Glass
2021-10-09  1:41   ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=84560f5e-eb67-edcb-8f96-19aa990a6bbd@gmail.com \
    --to=mr.nuke.me@gmail.com \
    --cc=andre.przywara@arm.com \
    --cc=joe.hershberger@ni.com \
    --cc=marex@denx.de \
    --cc=masahiroy@kernel.org \
    --cc=rasmus.villemoes@prevas.dk \
    --cc=robert.marko@sartura.hr \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.