* [PATCH 0/1] lz4: fix system halt at boot on x86_64
@ 2015-05-04 3:58 Caleb Jorden
2015-05-04 3:58 ` [PATCH 1/1] lz4: fix system halt at boot kernel " Caleb Jorden
0 siblings, 1 reply; 2+ messages in thread
From: Caleb Jorden @ 2015-05-04 3:58 UTC (permalink / raw)
To: linux-kernel; +Cc: gregkh, Caleb Jorden
I just upgraded one of my systems from 4.0.0 to 4.0.1, and
discovered that it would no longer boot. I tried recompiling
my kernel, to see if I had somehow corrupted it, but I got the
same results. After searching google for a bit, I discovered
the discussion here:
Re: [PATCHv2] lz4: fix system halted at boot kernel x86_64 compressed lz4
https://lkml.org/lkml/2015/4/3/453
I tested booting 4.0.1 with gzip compression, and it booted
fine. I tested after applying this patch, and it also booted
fine.
It appears that this patch was never properly submitted to Greg,
so this is my pass at trying to have it properly formatted for
him. This applies cleanly to 4.0.1. I also tried to clean
up the wording a bit for the patch.
Please CC me on any response, as I am not yet subscribed to
this list.
Caleb Jorden (1):
lz4: fix system halted at boot kernel on x86_64
lib/lz4/lz4_decompress.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
--
2.4.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 1/1] lz4: fix system halt at boot kernel on x86_64
2015-05-04 3:58 [PATCH 0/1] lz4: fix system halt at boot on x86_64 Caleb Jorden
@ 2015-05-04 3:58 ` Caleb Jorden
0 siblings, 0 replies; 2+ messages in thread
From: Caleb Jorden @ 2015-05-04 3:58 UTC (permalink / raw)
To: linux-kernel; +Cc: gregkh, Caleb Jorden, Krzysztof Kolasa
Sometimes, on x86_64, decompression fails with the following
error:
Decompressing Linux...
Decoding failed
-- System halted
This condition is not needed for a 64bit kernel(from commit d5e7caf):
if( ... ||
(op + COPYLENGTH) > oend)
goto _output_error
macro LZ4_SECURE_COPY() tests op and does not copy any data
when op exceeds the value.
added by analogy to lz4_uncompress_unknownoutputsize(...)
Signed-off-by: Krzysztof Kolasa <kkolasa@winsoft.pl>
Tested-by: Alexander Kuleshov <kuleshovmail@gmail.com>
Tested-by: Caleb Jorden <cjorden@gmail.com>
---
lib/lz4/lz4_decompress.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/lib/lz4/lz4_decompress.c b/lib/lz4/lz4_decompress.c
index f0f5c5c..8a742b1 100644
--- a/lib/lz4/lz4_decompress.c
+++ b/lib/lz4/lz4_decompress.c
@@ -139,8 +139,12 @@ static int lz4_uncompress(const char *source, char *dest, int osize)
/* Error: request to write beyond destination buffer */
if (cpy > oend)
goto _output_error;
+#if LZ4_ARCH64
+ if ((ref + COPYLENGTH) > oend)
+#else
if ((ref + COPYLENGTH) > oend ||
(op + COPYLENGTH) > oend)
+#endif
goto _output_error;
LZ4_SECURECOPY(ref, op, (oend - COPYLENGTH));
while (op < cpy)
@@ -270,7 +274,13 @@ static int lz4_uncompress_unknownoutputsize(const char *source, char *dest,
if (cpy > oend - COPYLENGTH) {
if (cpy > oend)
goto _output_error; /* write outside of buf */
-
+#if LZ4_ARCH64
+ if ((ref + COPYLENGTH) > oend)
+#else
+ if ((ref + COPYLENGTH) > oend ||
+ (op + COPYLENGTH) > oend)
+#endif
+ goto _output_error;
LZ4_SECURECOPY(ref, op, (oend - COPYLENGTH));
while (op < cpy)
*op++ = *ref++;
--
2.4.0
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-05-04 3:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-04 3:58 [PATCH 0/1] lz4: fix system halt at boot on x86_64 Caleb Jorden
2015-05-04 3:58 ` [PATCH 1/1] lz4: fix system halt at boot kernel " Caleb Jorden
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®