[syslinux:elflink] isolinux: Update LBA in getlinsec loop
syslinux-bot for Matt Fleming
matt.fleming at intel.com
Fri Jan 11 01:36:04 PST 2013
Commit-ID: 17a36e2c91706512e6c425222c9a9a451d9db854
Gitweb: http://www.syslinux.org/commit/17a36e2c91706512e6c425222c9a9a451d9db854
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: Fri, 11 Jan 2013 08:39:27 +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 8866298..b292d8f 100644
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -428,7 +428,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
@@ -436,6 +438,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