NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-arm/47081: Wrong offset and size in MBR partition on armeb.
(2012/10/16 0:05), Izumi Tsutsui wrote:
> The following reply was made to PR port-arm/47081; it has been noted by GNATS.
>
> From: Izumi Tsutsui <tsutsui%ceres.dti.ne.jp@localhost>
> To: gnats-bugs%NetBSD.org@localhost
> Cc: port-arm-maintainer%NetBSD.org@localhost,
> gnats-admin%NetBSD.org@localhost,
> netbsd-bugs%NetBSD.org@localhost, tsutsui%ceres.dti.ne.jp@localhost
> Subject: Re: port-arm/47081: Wrong offset and size in MBR partition on armeb.
> Date: Tue, 16 Oct 2012 00:01:04 +0900
>
> > RCS file: /cvsroot/src/sys/arch/arm/arm/disksubr_mbr.c,v
> > + LE32TOH(mbrp->mbrp_start);
> > + LE32TOH(mbrp->mbrp_size);
>
> Isn't it better to "swap on copying between on-disk-format and
> host-variable"
> to avoid confusion?
Yes, it is. I agree with you.
I'll commit with your patch that I've already tested.
Thanks.
>
> Index: disksubr_mbr.c
> ===================================================================
> RCS file: /cvsroot/src/sys/arch/arm/arm/disksubr_mbr.c,v
> retrieving revision 1.13
> diff -u -p -r1.13 disksubr_mbr.c
> --- disksubr_mbr.c 2 Dec 2011 00:25:37 -0000 1.13
> +++ disksubr_mbr.c 15 Oct 2012 14:58:07 -0000
> @@ -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;
>
>
--
-----------------------------------------------
SAITOH Masanobu (msaitoh%execsw.org@localhost
msaitoh%netbsd.org@localhost)
Home |
Main Index |
Thread Index |
Old Index