Module Name:    src
Committed By:   riz
Date:           Tue Oct 23 16:21:32 UTC 2012

Modified Files:
        src/sys/arch/arm/arm [netbsd-6]: disksubr_mbr.c

Log Message:
Pull up following revision(s) (requested by msaitoh in ticket #617):
        sys/arch/arm/arm/disksubr_mbr.c: revision 1.14
Fix a bug that armeb machine misunderstand MBR partition's offset
and size. Fixes PR#47081


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.13.4.1 src/sys/arch/arm/arm/disksubr_mbr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/arm/disksubr_mbr.c
diff -u src/sys/arch/arm/arm/disksubr_mbr.c:1.13 src/sys/arch/arm/arm/disksubr_mbr.c:1.13.4.1
--- src/sys/arch/arm/arm/disksubr_mbr.c:1.13	Fri Dec  2 00:25:37 2011
+++ src/sys/arch/arm/arm/disksubr_mbr.c	Tue Oct 23 16:21:32 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: disksubr_mbr.c,v 1.13 2011/12/02 00:25:37 jakllsch Exp $	*/
+/*	$NetBSD: disksubr_mbr.c,v 1.13.4.1 2012/10/23 16:21:32 riz Exp $	*/
 
 /*
  * Copyright (c) 1998 Christopher G. Demetriou.  All rights reserved.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr_mbr.c,v 1.13 2011/12/02 00:25:37 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr_mbr.c,v 1.13.4.1 2012/10/23 16:21:32 riz Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -151,23 +151,23 @@ mbr_label_read(dev_t dev,
 
 			/* Install in partition e, f, g, or h. */
 			pp = &lp->d_partitions['e' - 'a' + i];
-			pp->p_offset = mbrp->mbrp_start;
-			pp->p_size = mbrp->mbrp_size;
+			pp->p_offset = le32toh(mbrp->mbrp_start);
+			pp->p_size = le32toh(mbrp->mbrp_size);
 			pp->p_fstype = xlat_mbr_fstype(mbrp->mbrp_type);
 
 			/* is this ours? */
 			if (mbrp == ourmbrp) {
 				/* need sector address for SCSI/IDE,
 				 cylinder for ESDI/ST506/RLL */
-				mbrpartoff = mbrp->mbrp_start;
+				mbrpartoff = le32toh(mbrp->mbrp_start);
 				cyl = MBR_PCYL(mbrp->mbrp_scyl, mbrp->mbrp_ssect);
 
 #ifdef __i386__ /* XXX? */
 				/* update disklabel with details */
 				lp->d_partitions[2].p_size =
-				    mbrp->mbrp_size;
+				    le32toh(mbrp->mbrp_size);
 				lp->d_partitions[2].p_offset = 
-				    mbrp->mbrp_start;
+				    le32toh(mbrp->mbrp_start);
 				lp->d_ntracks = mbrp->mbrp_ehd + 1;
 				lp->d_nsectors = MBR_PSECT(mbrp->mbrp_esect);
 				lp->d_secpercyl =
@@ -250,7 +250,7 @@ mbr_label_locate(dev_t dev,
 	}
 
 	/* need sector address for SCSI/IDE, cylinder for ESDI/ST506/RLL */
-	mbrpartoff = ourmbrp->mbrp_start;
+	mbrpartoff = le32toh(ourmbrp->mbrp_start);
 	cyl = MBR_PCYL(ourmbrp->mbrp_scyl, ourmbrp->mbrp_ssect);
 
 	*cylp = cyl;

Reply via email to