From: Matt Fleming Date: Thu, 10 Jan 2013 21:33:32 +0000 (+0000) Subject: isolinux: Update LBA in getlinsec loop X-Git-Tag: accepted/tizen/20131118.222203~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cb015497a4e433ba81a47b28790b325807185617;p=profile%2Fivi%2Fsyslinux.git 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 Signed-off-by: Matt Fleming --- 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