Messages in this thread | | | Date | Wed, 11 May 2011 17:40:04 -0500 | From | Rob Landley <> | Subject | Don't understand comment in arch/x86/boot/compressed/misc.c |
| |
It talks about when decompression in place is safe to do:
* Getting to provable safe in place decompression is hard. * Worst case behaviours need to be analyzed. ... * The buffer for decompression in place is the length of the * uncompressed data, plus a small amount extra to keep the algorithm safe. * The compressed data is placed at the end of the buffer. The output * pointer is placed at the start of the buffer and the input pointer * is placed where the compressed data starts. Problems will occur * when the output pointer overruns the input pointer. * * The output pointer can only overrun the input pointer if the input * pointer is moving faster than the output pointer. A condition only * triggered by data whose compressed form is larger than the uncompressed * form.
You have an output pointer at a lower address catching up to an input pointer at a higher address. If the input pointer is moving FASTER than the output pointer, wouldn't the gap between them grow rather than shrink?
The concern seems to be about COMPRESSING in place, rather than decompressing...?
Rob
| |