Messages in this thread | | | Date | Tue, 29 Dec 2020 18:20:04 +0000 | From | Paul Cercueil <> | Subject | Re: [PATCH] MIPS: boot: Fix unaligned access with??
CONFIG_MIPS_RAW_APPENDED_DTB |
| |
Hi Thomas,
Le mar. 29 déc. 2020 à 16:08, Thomas Bogendoerfer <tsbogend@alpha.franken.de> a écrit : > On Mon, Dec 28, 2020 at 10:30:36PM +0000, Paul Cercueil wrote: >> Le lun. 28 déc. 2020 à 23:25, Thomas Bogendoerfer >> <tsbogend@alpha.franken.de> a écrit : >> > On Wed, Dec 16, 2020 at 11:39:56PM +0000, Paul Cercueil wrote: >> > > The compressed payload is not necesarily 4-byte aligned, at >> least >> > > when >> > > compiling with Clang. In that case, the 4-byte value appended >> to the >> > > compressed payload that corresponds to the uncompressed kernel >> image >> > > size must be read using get_unaligned_le(). >> > > >> > > This fixes Clang-built kernels not booting on MIPS (tested on a >> > > Ingenic >> > > JZ4770 board). >> > > >> > > Fixes: b8f54f2cde78 ("MIPS: ZBOOT: copy appended dtb to the >> end of >> > > the kernel") >> > > Cc: <stable@vger.kernel.org> # v4.7 >> > > Signed-off-by: Paul Cercueil <paul@crapouillou.net> >> > > --- >> > > arch/mips/boot/compressed/decompress.c | 2 +- >> > > 1 file changed, 1 insertion(+), 1 deletion(-) >> > > >> > > diff --git a/arch/mips/boot/compressed/decompress.c >> > > b/arch/mips/boot/compressed/decompress.c >> > > index c61c641674e6..47c07990432b 100644 >> > > --- a/arch/mips/boot/compressed/decompress.c >> > > +++ b/arch/mips/boot/compressed/decompress.c >> > > @@ -117,7 +117,7 @@ void decompress_kernel(unsigned long >> > > boot_heap_start) >> > > dtb_size = fdt_totalsize((void *)&__appended_dtb); >> > > >> > > /* last four bytes is always image size in little endian */ >> > > - image_size = le32_to_cpup((void *)&__image_end - 4); >> > > + image_size = get_unaligned_le32((void *)&__image_end - 4); >> > >> > gives me following error >> > >> > arch/mips/boot/compressed/decompress.c:120:16: error: implicit >> > declaration of function ‘get_unaligned_le32’ >> > [-Werror=implicit-function-declaration] >> > image_size = get_unaligned_le32((void *)&__image_end - 4); >> > >> > I've added >> > >> > #include <asm/unaligned.h> >> > >> > which fixes the compile error, but I'm wondering why the patch >> compiled >> > for you ? >> >> No idea - but it does compile fine without the include here. >> Probably a >> defconfig difference. > > # CONFIG_KERNEL_LZO is not set > # CONFIG_KERNEL_LZ4 is not set > > this makes the difference. Both decompress.c files include > asm/unaligned.h. > > I've added the #include, fixed the get_unaligned_le32 in the > description > and applied it to mips-fixes.
Alright, great! Thanks!
Cheers, -Paul
| |