NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: PR/47879 CVS commit: src/sys/dev
The following reply was made to PR kern/47879; it has been noted by GNATS.
From: Takahiro HAYASHI <t-hash%abox3.so-net.ne.jp@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: kern-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
netbsd-bugs%netbsd.org@localhost
Subject: Re: PR/47879 CVS commit: src/sys/dev
Date: Sun, 30 Jun 2013 16:44:22 +0900
Hello, sorry for late response.
I have confirmed it works fine by doing drvctl -p.
Thank you for fixing this prob.
On Mon, 3 Jun 2013 20:30:01 +0000 (UTC)
Takahiro HAYASHI <t-hash%abox3.so-net.ne.jp@localhost> wrote:
> The following reply was made to PR kern/47879; it has been noted by GNATS.
>
> From: Takahiro HAYASHI <t-hash%abox3.so-net.ne.jp@localhost>
> To: gnats-bugs%NetBSD.org@localhost
> Cc: kern-bug-people%NetBSD.org@localhost, gnats-admin%NetBSD.org@localhost,
> netbsd-bugs%NetBSD.org@localhost
> Subject: Re: PR/47879 CVS commit: src/sys/dev
> Date: Tue, 04 Jun 2013 05:28:55 +0900
>
> On Mon, 3 Jun 2013 16:45:01 +0000 (UTC)
> "Christos Zoulas" <christos%netbsd.org@localhost> wrote:
>
> > The following reply was made to PR kern/47879; it has been noted by GNATS.
> >
> > From: "Christos Zoulas" <christos%netbsd.org@localhost>
> > To: gnats-bugs%gnats.NetBSD.org@localhost
> > Cc:
> > Subject: PR/47879 CVS commit: src/sys/dev
> > Date: Mon, 3 Jun 2013 12:42:32 -0400
> >
> > Module Name: src
> > Committed By: christos
> > Date: Mon Jun 3 16:42:32 UTC 2013
> >
> > Modified Files:
> > src/sys/dev: vnd.c vndvar.h
> >
> > Log Message:
> > PR/47879: Takahiro HAYASHI: vnd cannot handle disk image larger than 2TiB
> > change size_t to uint64_t where needed.
>
> Thanks for commit but the fix is insufficient.
>
> In function vnd_set_geometry() of src/sys/dev/vnd.c, sectors per unit
> is the product of num of sectors, tracks and cylinders.
> This may cause interger overflow.
>
> dg->dg_secperunit = vnd->sc_geom.vng_nsectors *
> vnd->sc_geom.vng_ntracks * vnd->sc_geom.vng_ncylinders;
>
> The typeof right side variables are all uint32_t, so the result is
> calculated in interger.
>
> One of solutions to avoid overflow is to start right side
> with "1LL *".
>
> dg->dg_secperunit = 1LL * vnd->sc_geom.vng_nsectors *
> vnd->sc_geom.vng_ntracks * vnd->sc_geom.vng_ncylinders;
>
> Or cast first variable to int64_t.
>
> dg->dg_secperunit = (int64_t)vnd->sc_geom.vng_nsectors *
> vnd->sc_geom.vng_ntracks * vnd->sc_geom.vng_ncylinders;
>
> --
> t-hash
>
--
t-hash
Home |
Main Index |
Thread Index |
Old Index