diff options
authorJan Safrata <jsafrata@centrum.cz>2012-07-09 08:44:34 +0200
committerMatt Fleming <matt.fleming@intel.com>2012-07-09 12:28:57 +0100
commit2f5eb8f3a7df4f273c099d213f317abbce16163f (patch)
parent59b77fcf04f4ddfe012c0f613eff1f873e6bd274 (diff)
fix for boot crash of syslinux-4.xxobsolete-20120709
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@centrum.cz> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
1 files changed, 0 insertions, 1 deletions
diff --git a/core/fs/cache.c b/core/fs/cache.c
index 0d7891be..7c68c98a 100644
--- a/core/fs/cache.c
+++ b/core/fs/cache.c
@@ -40,7 +40,6 @@ void cache_init(struct device *dev, int block_size_shift)
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;