[syslinux] [PATCH v2] fix for boot crash of syslinux-4.xx

Jan Safrata jsafrata at centrum.cz
Sun Jul 8 23:44:34 PDT 2012


All syslinux 4.xx versions (tested up to 4.04) seems to contain a bug, that
causes a crash in early phase of syslinux boot from an usb stick.
This is always possible to reproduce, but only on certain hw (atom based
embedded board).
Version 3.86 of syslinux always works with that hw.

When syslinux 4.xx is used to setup bootable usb stick (which works on general
desktop pc), that usb stick does not work with embedded atom based board.
Screen is garbaged, flickering and the system hangs, instead of loading the
image to be booted.

Dissecting syslinux source code reveals, that the problem is within
core/fs/cache.c
function cache_init(), where seems to be an invalid pointer used to store an
initial value - following patch fixes the problem by removing the
offending line, that seems not to be needed anyway.

Signed-off-by: Jan Safrata <jsafrata at centrum.cz>
---
 core/fs/cache.c |    1 -
 1 file changed, 1 deletion(-)

--- syslinux-4.04/core/fs/cache.c-orig	2011-04-18 23:24:17.000000000 +0200
+++ syslinux-4.04/core/fs/cache.c	2011-09-29 10:54:46.000000000 +0200
@@ -40,7 +40,6 @@ void cache_init(struct device *dev, int
     cache = dev->cache_head + 1; /* First cache descriptor */
 
     head->prev  = &cache[dev->cache_entries-1];
-    head->next->prev = dev->cache_head;
     head->block = -1;
     head->data  = NULL;



More information about the Syslinux mailing list