[syslinux:master] memdisk: MBR not recognized correctly

syslinux-bot for Bodo Stroesser bstroesser.at.ts.fujitsu.com at zytor.com
Tue Mar 30 15:24:04 PDT 2010


Commit-ID:  7be3ff1150edfbfe62e1aab9ad3f9824082019d5
Gitweb:     http://syslinux.zytor.com/commit/7be3ff1150edfbfe62e1aab9ad3f9824082019d5
Author:     Bodo Stroesser <bstroesser at ts.fujitsu.com>
AuthorDate: Tue, 23 Mar 2010 17:56:29 +0100
Committer:  H. Peter Anvin <hpa at linux.intel.com>
CommitDate: Tue, 30 Mar 2010 15:19:41 -0700

memdisk: MBR not recognized correctly

This fixes a small inaccuracy in memdisk:

get_disk_image_geometry() does not use MBR data to detect disk
geometry, since it checks MBR signature at wrong offset.

This normally does not cause problems, because memdisk guesses a
reasonable value, if no MBR is found.

Signed-off-by: Bodo Stroesser <bstroesser at ts.fujitsu.com>
Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>


---
 memdisk/setup.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/memdisk/setup.c b/memdisk/setup.c
index bcb5d04..cec25ad 100644
--- a/memdisk/setup.c
+++ b/memdisk/setup.c
@@ -648,7 +648,7 @@ static const struct geometry *get_disk_image_geometry(uint32_t where,
 		if (!hd_geometry.driveno)
 		    hd_geometry.driveno = 0x80;
 
-		if (*(uint16_t *) ((char *)where + 512 - 2) == 0xaa55) {
+		if (*(uint16_t *) ((char *)where + hd_geometry.offset + 512 - 2) == 0xaa55) {
 		    for (i = 0; i < 4; i++) {
 			if (ptab[i].type && !(ptab[i].active & 0x7f)) {
 			    s = (ptab[i].start_s & 0x3f);



More information about the Syslinux-commits mailing list