[syslinux:master] isolinux: Update LBA in getlinsec loop
syslinux-bot for Matt Fleming
matt.fleming at intel.com
Sat Feb 16 02:00:03 PST 2013
Commit-ID: cb015497a4e433ba81a47b28790b325807185617
Gitweb: http://www.syslinux.org/commit/cb015497a4e433ba81a47b28790b325807185617
Author: Matt Fleming <matt.fleming at intel.com>
AuthorDate: Thu, 10 Jan 2013 21:33:32 +0000
Committer: Matt Fleming <matt.fleming at intel.com>
CommitDate: Mon, 14 Jan 2013 09:09:41 +0000
isolinux: Update LBA in getlinsec loop
We need to increment the Logical Block Address in eax by the number of
sectors we passed to getlinsec after every invocation, otherwise we'll
start with the same sector everytime.
This bug was discovered when booting an isohybrid image, which failed
to boot after printing the following error,
"Image checksum error, sorry..."
because the isolinux.bin was bigger than 32K, and thus invoked the
getlinsec loop that reads the file in chunks.
Cc: H. Peter Anvin <hpa at zytor.com>
Signed-off-by: Matt Fleming <matt.fleming at intel.com>
---
core/isolinux.asm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/core/isolinux.asm b/core/isolinux.asm
index 7a871f0..db6d2d4 100644
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -426,7 +426,9 @@ MaxLMA equ 384*1024 ; Reasonable limit (384K)
.ok:
xor bx,bx
push bp
+ push eax
call getlinsec
+ pop eax
pop cx
mov dx,cx
pop bp
@@ -434,6 +436,7 @@ MaxLMA equ 384*1024 ; Reasonable limit (384K)
shl cx,SECTOR_SHIFT - 4
add bx,cx
+ add eax,edx
sub bp,dx
jnz .more
More information about the Syslinux-commits
mailing list