]> xenbits.xensource.com Git - people/vhanquez/xen-unstable.git/commitdiff
x86/EDD: check MBR for BIOS magic before considering signature valid
authorJan Beulich <JBeulich@suse.com>
Thu, 31 May 2012 08:18:13 +0000 (10:18 +0200)
committerJan Beulich <JBeulich@suse.com>
Thu, 31 May 2012 08:18:13 +0000 (10:18 +0200)
Signed-off-by: Jan Beulich <JBeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
xen/arch/x86/boot/edd.S

index 59874ce4c6d0989f543c70da8619cafe6ca41bdd..2c8df8ccc85e777d60e46a6c4b063dfef72e64e4 100644 (file)
@@ -53,12 +53,16 @@ edd_mbr_sig_read:
         jc      edd_mbr_sig_done                # on failure, we're done.
         cmpb    $0, %ah                         # some BIOSes do not set CF
         jne     edd_mbr_sig_done                # on failure, we're done.
+        cmpw    $0xaa55, bootsym(boot_edd_info)+0x1fe
+        jne     .Ledd_mbr_sig_next
         movl    bootsym(boot_edd_info)+EDD_MBR_SIG_OFFSET,%eax
         movb    %dl, (%bx)                      # store BIOS drive number
         movl    %eax, 4(%bx)                    # store signature from MBR
         incb    bootsym(boot_mbr_signature_nr)  # note that we stored something
-        incb    %dl                             # increment to next device
         addw    $8, %bx                         # increment sig buffer ptr
+.Ledd_mbr_sig_next:
+        incb    %dl                             # increment to next device
+        jz      edd_mbr_sig_done
         cmpb    $EDD_MBR_SIG_MAX,bootsym(boot_mbr_signature_nr)
         jb      edd_mbr_sig_read
 edd_mbr_sig_done: