From nobody Sat Sep 26 22:55:58 2026 Received: from mail.andi.de1.cc (mail.andi.de1.cc [178.238.236.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D6229364941 for ; Fri, 28 Aug 2026 20:32:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.238.236.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787949170; cv=none; b=nCGs6L7ihck2fWfXAHSFWlUw7M4SrYCHf6m1jZGtDbwDfm3ZVrguSH2XKE7SLOGUSO0jhMLFN+cshJGeca/zUB+72Wt4iFJwynqfvtfxJSFJQQHTV5uh3btoeNBp0KBFdxSzQQi/9sEptzGPPwHFBtC9QuR6gDG4YaLOyoQ3mtI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787949170; c=relaxed/simple; bh=L0GPDlMwgRHPBrGDsJLCwygoIQ5B+ueaOAchdw4SIGo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IZkj7Cq/RO0UjVKYwMyUenEEgkSO2flPDv87bKgZunNDTmQIKOpbZL5M1+AQQVRi4g7QaFWbKRJU7dYPaq68JZrD5ZOZzH5oXAaFSE+AlCq7sGE/pdi6EIa8eDD98IsqqSMva3ffYhFC6NxN09d9/VJRouzpx001mrkK1dZp3QE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info; spf=pass smtp.mailfrom=kemnade.info; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b=QX8hKQnI; arc=none smtp.client-ip=178.238.236.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kemnade.info Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b="QX8hKQnI" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kemnade.info; s=20220719; h=Cc:To:In-Reply-To:References:Subject:From: Reply-To:Content-ID:Content-Description; bh=C/keNu9YOo7zAzx95aDUptk6EtzUmbckhpZVCqPPVXs=; t=1787949168; x=1789158768; b=QX8hKQnIm9aN2VuusTRWCcC0AXyh2n7Q2M28XkekNi+uK1yttWrrOVe0toatFSe/4mrnWXzrB3E j+3Y/+SA4ca4aEwsTyM8Euk+qoKVkJiW/cd3KjDCKw2yaH3fz92DapfSd1pek1O2VHiYZz5Ixso3G pVJLAaVyCJ5JEBHstPIY5WTskvJkHw7ptz2iV6o8fmugt/UFMf96eJ30Au5TXV0zWNEUb5urtUHgs MF53rGWRJUoNkvUnSzXPzQztdn2mIh/9ccFaCJFOS7lC4bz2Jwg+npkyV7Y48XJ91AVP4Y8yCvOrR N1dBJMOZFwYiaxFWYvvmu3StaJR9F3jjGrWw==; From: Andreas Kemnade Date: Fri, 28 Aug 2026 22:32:19 +0200 Subject: [PATCH v2 1/3] ARM: compressed: Pass the actual output length to the decompressor Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260828-zstd2-v2-1-4d9ce7150877@kemnade.info> References: <20260828-zstd2-v2-0-4d9ce7150877@kemnade.info> In-Reply-To: <20260828-zstd2-v2-0-4d9ce7150877@kemnade.info> To: Russell King , Nick Terrell , David Sterba , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: Andreas Kemnade , j.neuschaefer@gmx.net, f.fainelli@gmail.com, Tony Lindgren , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Linus Walleij X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3671; i=andreas@kemnade.info; h=from:subject:message-id; bh=/L/veojh/62XQryZCdewjJj5pfYPoiKhGTtsVvoXBR0=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDFkTP6RterV32emUhIOB0b79nl5Rq+Ritp9OnRgiPeXLg UsNVvpOHaUsDGJcDLJiiiy/rBXcPqk8yw2eGmEPM4eVCWQIAxenAEzkszwjw/EU0f8bdxcp5ftn L1moxrTk/3uPnTetdXhyLn3MM2mcUs/I8I4hRSvd9ZdtZkPMqceWTt9Yo6duTP6S90Hikam3Ak8 +NwA= X-Developer-Key: i=andreas@kemnade.info; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 From: Jonathan Neusch=C3=A4fer ZSTD writes outside of the space that is necessary for the uncompressed data, when it is told it has unlimited output length. To fix this, pass the actual output length (the length of the uncompressed kernel) to the decompressor. The uncompressed length is already stored as a little endian 32-bit constant before the input_data_end symbol. Signed-off-by: Jonathan Neusch=C3=A4fer Reviewed-by: Tony Lindgren Reviewed-by: Florian Fainelli Reviewed-by: Linus Walleij Signed-off-by: Andreas Kemnade Reviewed-by: Linus Walleij --- arch/arm/boot/compressed/decompress.c | 4 ++-- arch/arm/boot/compressed/misc.c | 10 +++++++++- arch/arm/boot/compressed/misc.h | 3 ++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compress= ed/decompress.c index 0669851394f04..b0352f379277f 100644 --- a/arch/arm/boot/compressed/decompress.c +++ b/arch/arm/boot/compressed/decompress.c @@ -60,7 +60,7 @@ extern char * strchrnul(const char *, int); #include "../../../../lib/decompress_unlz4.c" #endif =20 -int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)) +int do_decompress(u8 *input, int len, u8 *output, int outlen, void (*error= )(char *x)) { - return __decompress(input, len, NULL, NULL, output, 0, NULL, error); + return __decompress(input, len, NULL, NULL, output, outlen, NULL, error); } diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/mis= c.c index 6c41b270560e1..58826885ccc82 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c @@ -22,6 +22,7 @@ unsigned int __machine_arch_type; #include /* for inline */ #include #include +#include #include "misc.h" #ifdef CONFIG_ARCH_EP93XX #include "misc-ep93xx.h" @@ -128,14 +129,21 @@ asmlinkage void __div0(void) error("Attempting division by 0!"); } =20 +static u32 get_inflated_image_size(void) +{ + return get_unaligned_le32(input_data_end - 4); +} + void decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p, unsigned long free_mem_ptr_end_p, int arch_id) { + unsigned long output_data_len; int ret; =20 output_data =3D (unsigned char *)output_start; + output_data_len =3D get_inflated_image_size(); free_mem_ptr =3D free_mem_ptr_p; free_mem_end_ptr =3D free_mem_ptr_end_p; __machine_arch_type =3D arch_id; @@ -147,7 +155,7 @@ decompress_kernel(unsigned long output_start, unsigned = long free_mem_ptr_p, =20 putstr("Uncompressing Linux..."); ret =3D do_decompress(input_data, input_data_end - input_data, - output_data, error); + output_data, output_data_len, error); if (ret) error("decompressor returned an error"); else diff --git a/arch/arm/boot/compressed/misc.h b/arch/arm/boot/compressed/mis= c.h index 8c73940b5fe46..ec8de2388f0ec 100644 --- a/arch/arm/boot/compressed/misc.h +++ b/arch/arm/boot/compressed/misc.h @@ -13,7 +13,8 @@ decompress_kernel(unsigned long output_start, unsigned lo= ng free_mem_ptr_p, void __fortify_panic(const u8 reason, size_t avail, size_t size); int atags_to_fdt(void *atag_list, void *fdt, int total_space); uint32_t fdt_check_mem_start(uint32_t mem_start, const void *fdt); -int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)); +int do_decompress(u8 *input, int len, u8 *output, int outlen, + void (*error)(char *x)); =20 extern char input_data[]; extern char input_data_end[]; --=20 2.47.3 From nobody Sat Sep 26 22:55:58 2026 Received: from mail.andi.de1.cc (mail.andi.de1.cc [178.238.236.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FF6B35F5E4 for ; Fri, 28 Aug 2026 20:32:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.238.236.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787949170; cv=none; b=dDONPCi7nBaqZ2lKziQfcSKuey7TPRIrxYka07puL+6OawjODXZn+GF4uxBX9KT7k6iqDUPJgc3eCmSPwGjkHlCB6mmW9VO7d1tgdwOHd3nPNt9RBs1RfbsQeqY1t1LNfZmgbzI9mv+oHy6Pg+BalWE5gRQ8pQbSuhKEOz9n03A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787949170; c=relaxed/simple; bh=/hLy7jiHkvVQqauhpnzFaBQ2niZctuMgZJb64e4wEBg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Jg82U4LJylMOeatRJMrvG45Epml4rU1O3APGBg+0SieznKFb8TfPIVOG/jhlgBZJmBoTQB/FAy1jwOkL24SR+xOLCceDrihnrTR5AFLT0Bgo08xmZiSZo+viY+Ky+CHvX8J1nwo9qUyjtWM7ae/DKqX5p8j3m/yCogRGK+QCw/Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info; spf=pass smtp.mailfrom=kemnade.info; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b=HYALtHNU; arc=none smtp.client-ip=178.238.236.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kemnade.info Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b="HYALtHNU" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kemnade.info; s=20220719; h=Cc:To:In-Reply-To:References:Subject:From: Reply-To:Content-ID:Content-Description; bh=+X15T1fcpe3iI6rFk13FMG/iW6iRWR1lKoh9bfasM84=; t=1787949168; x=1789158768; b=HYALtHNUwYvHCBcLZTNsCHf3B4vOCV5fRwhACKtAbrtqy+98TB6sUiBsLufWQHTpNIv8+fqANih /gvMm5AHhfdjC8rZsxVM0jaRVrCUaWU+qpmXwfmK/gVNzZoQjRnuCGAjiHkThar9XiiNBC5+JSX4s N/ty+IeMsSG1Dy9y6xqDP/wgpAQVnLnQsv5g1shRZvAONq1WZ2Zc/0SRYWJHXLmJvOIxm4H4K98HN LHWdWSUBbOxpgu6iTsgKjWa4SVj+/2A+t1EhUQ7d/eJroCAOK5rrrH/OrvSjmEaTYfmZAqRrQesRX G4CCHnWy1b5/K5EiVoNTdLbbvgDU5UBNnolQ==; From: Andreas Kemnade Date: Fri, 28 Aug 2026 22:32:20 +0200 Subject: [PATCH v2 2/3] ARM: compressed: Bump MALLOC_SIZE to 128 KiB Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260828-zstd2-v2-2-4d9ce7150877@kemnade.info> References: <20260828-zstd2-v2-0-4d9ce7150877@kemnade.info> In-Reply-To: <20260828-zstd2-v2-0-4d9ce7150877@kemnade.info> To: Russell King , Nick Terrell , David Sterba , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: Andreas Kemnade , j.neuschaefer@gmx.net, f.fainelli@gmail.com, Tony Lindgren , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Linus Walleij X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1631; i=andreas@kemnade.info; h=from:subject:message-id; bh=+UrMNo6HSjDQ27FgGwmv5HaqBYMyLiKEYeg3oyNuDMc=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDFkTP6S9P3iq0d376Mv4M4/nBGmZ2N7PDAysjupRdFcoX OG+S6yho5SFQYyLQVZMkeWXtYLbJ5VnucFTI+xh5rAygQxh4OIUgIm8d2RkuJcTfOn/3tKp5wJa 35cvFvnoYq0fEnfaTTwwfcryarkfLowMx3LOeR9tz79yPi56Y7LM9u3vH3/pW+WgzJo3o9+h8Zc 5KwA= X-Developer-Key: i=andreas@kemnade.info; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 From: Jonathan Neusch=C3=A4fer The ZSTD compressor needs about 100 KiB. Signed-off-by: Jonathan Neusch=C3=A4fer Reviewed-by: Florian Fainelli Reviewed-by: Linus Walleij Signed-off-by: Andreas Kemnade Reviewed-by: Linus Walleij --- arch/arm/boot/compressed/Makefile | 2 +- arch/arm/boot/compressed/head.S | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/M= akefile index e3f550d628578..fa6ee23cd72eb 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -62,7 +62,7 @@ ZTEXTADDR :=3D 0 ZBSSADDR :=3D ALIGN(8) endif =20 -MALLOC_SIZE :=3D 65536 +MALLOC_SIZE :=3D 131072 =20 AFLAGS_head.o +=3D -DTEXT_OFFSET=3D$(TEXT_OFFSET) -DMALLOC_SIZE=3D$(MALLOC= _SIZE) CPPFLAGS_vmlinux.lds :=3D -DTEXT_START=3D"$(ZTEXTADDR)" -DBSS_START=3D"$(Z= BSSADDR)" diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/hea= d.S index 9f406e9c0ea6f..23fbbe94da6e8 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -337,7 +337,7 @@ restart: adr r0, LC1 get_inflated_image_size r9, r10, lr =20 #ifndef CONFIG_ZBOOT_ROM - /* malloc space is above the relocated stack (64k max) */ + /* malloc space is above the relocated stack (128k max) */ add r10, sp, #MALLOC_SIZE #else /* @@ -629,7 +629,7 @@ not_relocated: mov r0, #0 */ mov r0, r4 mov r1, sp @ malloc space above stack - add r2, sp, #MALLOC_SIZE @ 64k max + add r2, sp, #MALLOC_SIZE @ 128k max mov r3, r7 bl decompress_kernel =20 --=20 2.47.3 From nobody Sat Sep 26 22:55:58 2026 Received: from mail.andi.de1.cc (mail.andi.de1.cc [178.238.236.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 68D7A370AEB for ; Fri, 28 Aug 2026 20:32:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.238.236.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787949170; cv=none; b=lUpLvj9OCN1jTs9PlrPk9bRYcQW/k4ZiPEMZaWik77r6z/lapR3KW8jqn84aFkmjBcXAeNLG8NNyBMz+PJJ4CEm/goZRvhEh/kmxUqKdJbJ/lzJOjxanNvPHtC80fUtcr+GpEM36TyGt1NYxKuieX+Z55fGDI8l3Sr2VWUBRBsc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787949170; c=relaxed/simple; bh=6pP3PP/XJQVJ+6OA0XXV7DTtOLM6WgYYELukGIdg+4k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Sh1/pdlsoV9gDjrDZk0pwi6yU29W0GXZMBZjFhSE7JjUZ8TeftIVfPvUuhaf7840EyB0UJlp4BEO0CWmndp4PbmMQEhRdH86srNE/jFvRFprHmyFaDHODRW1RfnuOZLXYEFJHUzyEdVrfPM1C3oxad/Kn4otqYzfb7lwaT74+UY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info; spf=pass smtp.mailfrom=kemnade.info; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b=1oLwS5PE; arc=none smtp.client-ip=178.238.236.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kemnade.info Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kemnade.info Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kemnade.info header.i=@kemnade.info header.b="1oLwS5PE" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kemnade.info; s=20220719; h=Cc:To:In-Reply-To:References:Subject:From: Reply-To:Content-ID:Content-Description; bh=xD32YxabsHZLtPd2fWQoozGihUGIxltQHFZiqEPPor4=; t=1787949169; x=1789158769; b=1oLwS5PEhrnsGXnMQbpaP8TObYyDi7meGoKrA4IuSYHepYOuw4IKBDYApXvpVJY3qZJ1uyXWP1t yDDw/aRlZkiTv7CZRKOfXGH4O09tax6tJ4UbeN/wYnZT8n8C/1VJIpLTftpl50KZfsxTK4F3+RyBi of+ijRNwcdUsZXymzDryps9L63MBE1zJrrzUnHwJriyqC2aBSbbmO0zVmMlWDAafq77j1jDL+5lBj 4W80z8xeurCIlHHn6r7W48vr64z2SQl+wz3OR3zFwGFLYkGwYqw0RPvoR7tByKDSisl/6Y9VaCcco el0FICgYNWfMhPtVN+TP7/8gnoGqBDlJ/EKg==; From: Andreas Kemnade Date: Fri, 28 Aug 2026 22:32:21 +0200 Subject: [PATCH v2 3/3] ARM: compressed: Enable ZSTD compression Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260828-zstd2-v2-3-4d9ce7150877@kemnade.info> References: <20260828-zstd2-v2-0-4d9ce7150877@kemnade.info> In-Reply-To: <20260828-zstd2-v2-0-4d9ce7150877@kemnade.info> To: Russell King , Nick Terrell , David Sterba , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: Andreas Kemnade , j.neuschaefer@gmx.net, f.fainelli@gmail.com, Tony Lindgren , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Linus Walleij X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2984; i=andreas@kemnade.info; h=from:subject:message-id; bh=6pP3PP/XJQVJ+6OA0XXV7DTtOLM6WgYYELukGIdg+4k=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDFkTP6QVHBa0Ky0S3VbdYt0g6r1QyfeA+ZLo4O+++S3hr nN2mm/tKGVhEONikBVTZPllreD2SeVZbvDUCHuYOaxMIEMYuDgFYCK7LBgZji3fOHHJm4uxmq0d G/jnXvv2bIphY5FW1sV392pCGdOu3GH4p15ZLLCo5cHWGU47vpT/FLGR2bnF78yTOfdkr642V// 7mQ8A X-Developer-Key: i=andreas@kemnade.info; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 With the previous two commits, it is possible to enable ZSTD in the decompressor stub for 32-bit ARM. KASAN logic for XZ is extended for ZSTD, since the affected functions are also in use. Measurement was done with clang-19. Setup was: starting a fastboot image via u-boot, serial console attached. Time was measured using ts -s %.s Reviewed-by: Linus Walleij --- arch/arm/Kconfig | 1 + arch/arm/boot/compressed/Makefile | 1 + arch/arm/boot/compressed/decompress.c | 11 ++++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 9187240a02db5..cf612ee4064c3 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -122,6 +122,7 @@ config ARM select HAVE_KERNEL_LZMA select HAVE_KERNEL_LZO select HAVE_KERNEL_XZ + select HAVE_KERNEL_ZSTD select HAVE_KPROBES if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !CPU_V7M select HAVE_KRETPROBES if HAVE_KPROBES select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >=3D 23600 || LD= _IS_LLD) && LD_CAN_USE_KEEP_IN_OVERLAY diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/M= akefile index fa6ee23cd72eb..1c6638e1999ab 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -74,6 +74,7 @@ compress-$(CONFIG_KERNEL_LZO) =3D lzo_with_size compress-$(CONFIG_KERNEL_LZMA) =3D lzma_with_size compress-$(CONFIG_KERNEL_XZ) =3D xzkern_with_size compress-$(CONFIG_KERNEL_LZ4) =3D lz4_with_size +compress-$(CONFIG_KERNEL_ZSTD) =3D zstd22_with_size =20 libfdt_objs :=3D fdt_rw.o fdt_ro.o fdt_wip.o fdt.o =20 diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compress= ed/decompress.c index b0352f379277f..5f82c0c754fa5 100644 --- a/arch/arm/boot/compressed/decompress.c +++ b/arch/arm/boot/compressed/decompress.c @@ -47,15 +47,24 @@ extern char * strchrnul(const char *, int); #include "../../../../lib/decompress_unlzma.c" #endif =20 -#ifdef CONFIG_KERNEL_XZ +#if defined(CONFIG_KERNEL_XZ) || defined(CONFIG_KERNEL_ZSTD) /* Prevent KASAN override of string helpers in decompressor */ #undef memmove #define memmove memmove #undef memcpy #define memcpy memcpy +#undef memset +#define memset memset +#endif + +#ifdef CONFIG_KERNEL_XZ #include "../../../../lib/decompress_unxz.c" #endif =20 +#ifdef CONFIG_KERNEL_ZSTD +#include "../../../../lib/decompress_unzstd.c" +#endif + #ifdef CONFIG_KERNEL_LZ4 #include "../../../../lib/decompress_unlz4.c" #endif --=20 2.47.3