Patch "s390/decompressor: specify __decompress() buf len to avoid overflow" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    s390/decompressor: specify __decompress() buf len to avoid overflow

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     s390-decompressor-specify-__decompress-buf-len-to-av.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 915f1e1a2d8aca8fa19f00434cd713d5b6eaa1cf
Author: Vasily Gorbik <gor@xxxxxxxxxxxxx>
Date:   Sun Jan 29 23:47:23 2023 +0100

    s390/decompressor: specify __decompress() buf len to avoid overflow
    
    [ Upstream commit 7ab41c2c08a32132ba8c14624910e2fe8ce4ba4b ]
    
    Historically calls to __decompress() didn't specify "out_len" parameter
    on many architectures including s390, expecting that no writes beyond
    uncompressed kernel image are performed. This has changed since commit
    2aa14b1ab2c4 ("zstd: import usptream v1.5.2") which includes zstd library
    commit 6a7ede3dfccb ("Reduce size of dctx by reutilizing dst buffer
    (#2751)"). Now zstd decompression code might store literal buffer in
    the unwritten portion of the destination buffer. Since "out_len" is
    not set, it is considered to be unlimited and hence free to use for
    optimization needs. On s390 this might corrupt initrd or ipl report
    which are often placed right after the decompressor buffer. Luckily the
    size of uncompressed kernel image is already known to the decompressor,
    so to avoid the problem simply specify it in the "out_len" parameter.
    
    Link: https://github.com/facebook/zstd/commit/6a7ede3dfccb
    Signed-off-by: Vasily Gorbik <gor@xxxxxxxxxxxxx>
    Tested-by: Alexander Egorenkov <egorenar@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/patch-1.thread-41c676.git-41c676c2d153.your-ad-here.call-01675030179-ext-9637@work.hours
    Signed-off-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/s390/boot/decompressor.c b/arch/s390/boot/decompressor.c
index e27c2140d6206..623f6775d01d7 100644
--- a/arch/s390/boot/decompressor.c
+++ b/arch/s390/boot/decompressor.c
@@ -80,6 +80,6 @@ void *decompress_kernel(void)
 	void *output = (void *)decompress_offset;
 
 	__decompress(_compressed_start, _compressed_end - _compressed_start,
-		     NULL, NULL, output, 0, NULL, error);
+		     NULL, NULL, output, vmlinux.image_size, NULL, error);
 	return output;
 }



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux