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;