summaryrefslogtreecommitdiffstats
path: root/sys/dev/flash.c
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2013-10-29 21:58:38 +0000
committerkrw <krw@openbsd.org>2013-10-29 21:58:38 +0000
commitf9df56969a636cbde28962c308a2fb31e28bf16e (patch)
tree046a06b0ff132b01b4f05cdbd50b16703f61cad2 /sys/dev/flash.c
parentMore cleanups: (diff)
downloadwireguard-openbsd-f9df56969a636cbde28962c308a2fb31e28bf16e.tar.xz
wireguard-openbsd-f9df56969a636cbde28962c308a2fb31e28bf16e.zip
Don't add sectors to blocks. Use DL_SECTOBLK() to change DL_GETPOFFSET()
sector value to 512-byte-blocks before adding to b_blkno. gcc tested on zaurus by matthieu@.
Diffstat (limited to 'sys/dev/flash.c')
-rw-r--r--sys/dev/flash.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/flash.c b/sys/dev/flash.c
index 26a3428c083..422db0cc9dc 100644
--- a/sys/dev/flash.c
+++ b/sys/dev/flash.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: flash.c,v 1.27 2013/10/20 10:11:17 krw Exp $ */
+/* $OpenBSD: flash.c,v 1.28 2013/10/29 21:58:38 krw Exp $ */
/*
* Copyright (c) 2005 Uwe Stuehler <uwe@openbsd.org>
@@ -881,12 +881,15 @@ flashstart(struct flash_softc *sc)
void
_flashstart(struct flash_softc *sc, struct buf *bp)
{
+ struct disklabel *lp;
int part;
daddr_t offset;
long pgno;
part = flashpart(bp->b_dev);
- offset = DL_GETPOFFSET(&sc->sc_dk.dk_label->d_partitions[part]) +
+
+ lp = sc->sc_dk.dk_label;
+ offset = DL_SECTOBLK(lp, DL_GETPOFFSET(&lp->d_partitions[part])) +
bp->b_blkno;
pgno = offset / (sc->sc_flashdev->pagesize / DEV_BSIZE);