diff options
author | 2017-05-04 22:47:27 +0000 | |
---|---|---|
committer | 2017-05-04 22:47:27 +0000 | |
commit | d40269aff7aa0cf551de8ebbb8ea6dc0e8a786c9 (patch) | |
tree | d360dad83b7ddd423dca45f3cd22614addad5503 | |
parent | Add IPsec test for manually configured SA bundles. That does ipcomp, (diff) | |
download | wireguard-openbsd-d40269aff7aa0cf551de8ebbb8ea6dc0e8a786c9.tar.xz wireguard-openbsd-d40269aff7aa0cf551de8ebbb8ea6dc0e8a786c9.zip |
Also pass the blk offset to disk_unbusy(), so that it can pass it to
the random subsystem as entropy. This value is pretty much unknown,
and anyways our entropy input ring does not saturate from knowns.
ok mikeb djm
-rw-r--r-- | sys/arch/octeon/dev/amdcf.c | 4 | ||||
-rw-r--r-- | sys/arch/octeon/dev/octcf.c | 4 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/fd.c | 10 | ||||
-rw-r--r-- | sys/dev/ata/wd.c | 6 | ||||
-rw-r--r-- | sys/dev/flash.c | 4 | ||||
-rw-r--r-- | sys/dev/isa/fd.c | 6 | ||||
-rw-r--r-- | sys/kern/subr_disk.c | 7 | ||||
-rw-r--r-- | sys/scsi/cd.c | 6 | ||||
-rw-r--r-- | sys/scsi/sd.c | 6 | ||||
-rw-r--r-- | sys/sys/disk.h | 4 |
10 files changed, 29 insertions, 28 deletions
diff --git a/sys/arch/octeon/dev/amdcf.c b/sys/arch/octeon/dev/amdcf.c index e846914f9ee..d5609781c20 100644 --- a/sys/arch/octeon/dev/amdcf.c +++ b/sys/arch/octeon/dev/amdcf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: amdcf.c,v 1.2 2016/01/20 17:23:58 stefan Exp $ */ +/* $OpenBSD: amdcf.c,v 1.3 2017/05/04 22:47:27 deraadt Exp $ */ /* * Copyright (c) 2007, Juniper Networks, Inc. @@ -672,7 +672,7 @@ amdcfdone(void *arg) bp->b_flags |= B_ERROR; disk_unbusy(&sc->sc_dk, (bp->b_bcount - bp->b_resid), - (bp->b_flags & B_READ)); + bp->b_blkno, (bp->b_flags & B_READ)); biodone(bp); } diff --git a/sys/arch/octeon/dev/octcf.c b/sys/arch/octeon/dev/octcf.c index 79c29fcf944..42beab06c46 100644 --- a/sys/arch/octeon/dev/octcf.c +++ b/sys/arch/octeon/dev/octcf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: octcf.c,v 1.28 2016/01/20 17:23:58 stefan Exp $ */ +/* $OpenBSD: octcf.c,v 1.29 2017/05/04 22:47:27 deraadt Exp $ */ /* $NetBSD: wd.c,v 1.193 1999/02/28 17:15:27 explorer Exp $ */ /* @@ -390,7 +390,7 @@ octcfdone(void *arg) bp->b_flags |= B_ERROR; disk_unbusy(&wd->sc_dk, (bp->b_bcount - bp->b_resid), - (bp->b_flags & B_READ)); + bp->b_blkno, (bp->b_flags & B_READ)); biodone(bp); } diff --git a/sys/arch/sparc64/dev/fd.c b/sys/arch/sparc64/dev/fd.c index 8c48b4ee12d..17a28a955fe 100644 --- a/sys/arch/sparc64/dev/fd.c +++ b/sys/arch/sparc64/dev/fd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fd.c,v 1.47 2017/04/30 16:45:45 mpi Exp $ */ +/* $OpenBSD: fd.c,v 1.48 2017/05/04 22:47:27 deraadt Exp $ */ /* $NetBSD: fd.c,v 1.112 2003/08/07 16:29:35 agc Exp $ */ /*- @@ -1420,7 +1420,7 @@ loop: case DSKCHGWAIT: timeout_del(&fdc->fdctimeout_to); - disk_unbusy(&fd->sc_dk, 0, 0); + disk_unbusy(&fd->sc_dk, 0, 0, 0); if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 || cyl != 1 * fd->sc_type->step) { fdcstatus(fdc, "dskchg seek failed"); @@ -1525,7 +1525,7 @@ loop: /*FALLTHROUGH*/ case SEEKCOMPLETE: /* no data on seek */ - disk_unbusy(&fd->sc_dk, 0, 0); + disk_unbusy(&fd->sc_dk, 0, 0, 0); /* Make sure seek really happened. */ if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 || @@ -1570,7 +1570,7 @@ loop: case IOCLEANUPWAIT: /* IO FAILED, cleanup succeeded */ timeout_del(&fdc->fdctimeout_to); disk_unbusy(&fd->sc_dk, (bp->b_bcount - bp->b_resid), - (bp->b_flags & B_READ)); + bp->b_blkno, (bp->b_flags & B_READ)); fdcretry(fdc); goto loop; @@ -1578,7 +1578,7 @@ loop: timeout_del(&fdc->fdctimeout_to); disk_unbusy(&fd->sc_dk, (bp->b_bcount - bp->b_resid), - (bp->b_flags & B_READ)); + bp->b_blkno, (bp->b_flags & B_READ)); if (fdc->sc_nstat != 7 || st1 != 0 || ((st0 & 0xf8) != 0 && diff --git a/sys/dev/ata/wd.c b/sys/dev/ata/wd.c index 5e2461feb3a..cd168223672 100644 --- a/sys/dev/ata/wd.c +++ b/sys/dev/ata/wd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: wd.c,v 1.120 2016/01/20 17:23:58 stefan Exp $ */ +/* $OpenBSD: wd.c,v 1.121 2017/05/04 22:47:27 deraadt Exp $ */ /* $NetBSD: wd.c,v 1.193 1999/02/28 17:15:27 explorer Exp $ */ /* @@ -568,7 +568,7 @@ noerror: if ((wd->sc_wdc_bio.flags & ATA_CORR) || wd->retries > 0) wd->sc_dev.dv_xname); } disk_unbusy(&wd->sc_dk, (bp->b_bcount - bp->b_resid), - (bp->b_flags & B_READ)); + bp->b_blkno, (bp->b_flags & B_READ)); biodone(bp); wd->openings++; wdstart(wd); @@ -589,7 +589,7 @@ wdrestart(void *v) return; s = splbio(); - disk_unbusy(&wd->sc_dk, 0, (bp->b_flags & B_READ)); + disk_unbusy(&wd->sc_dk, 0, 0, (bp->b_flags & B_READ)); __wdstart(v, bp); splx(s); } diff --git a/sys/dev/flash.c b/sys/dev/flash.c index c391fb83b47..e0069a5c130 100644 --- a/sys/dev/flash.c +++ b/sys/dev/flash.c @@ -1,4 +1,4 @@ -/* $OpenBSD: flash.c,v 1.31 2015/08/12 22:37:32 krw Exp $ */ +/* $OpenBSD: flash.c,v 1.32 2017/05/04 22:47:27 deraadt Exp $ */ /* * Copyright (c) 2005 Uwe Stuehler <uwe@openbsd.org> @@ -931,7 +931,7 @@ flashdone(void *v) /* Instrumentation. */ disk_unbusy(&sc->sc_dk, bp->b_bcount - bp->b_resid, - (bp->b_flags & B_READ) != 0); + bp->b_blkno, (bp->b_flags & B_READ) != 0); if (bp->b_error != 0) bp->b_flags |= B_ERROR; diff --git a/sys/dev/isa/fd.c b/sys/dev/isa/fd.c index b2b378b2846..3e16d054428 100644 --- a/sys/dev/isa/fd.c +++ b/sys/dev/isa/fd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fd.c,v 1.103 2015/11/25 04:49:10 tedu Exp $ */ +/* $OpenBSD: fd.c,v 1.104 2017/05/04 22:47:27 deraadt Exp $ */ /* $NetBSD: fd.c,v 1.90 1996/05/12 23:12:03 mycroft Exp $ */ /*- @@ -811,7 +811,7 @@ loop: return 1; case SEEKCOMPLETE: - disk_unbusy(&fd->sc_dk, 0, 0); /* no data on seek */ + disk_unbusy(&fd->sc_dk, 0, 0, 0); /* no data on seek */ /* Make sure seek really happened. */ out_fdc(iot, ioh, NE7CMD_SENSEI); @@ -838,7 +838,7 @@ loop: timeout_del(&fd->fdtimeout_to); disk_unbusy(&fd->sc_dk, (bp->b_bcount - bp->b_resid), - (bp->b_flags & B_READ)); + fd->sc_blkno, (bp->b_flags & B_READ)); if (fdcresult(fdc) != 7 || (st0 & 0xf8) != 0) { isadma_abort(fdc->sc_drq); diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c index 4d220feeae0..07783b57002 100644 --- a/sys/kern/subr_disk.c +++ b/sys/kern/subr_disk.c @@ -1,4 +1,4 @@ -/* $OpenBSD: subr_disk.c,v 1.229 2017/04/20 14:13:00 visa Exp $ */ +/* $OpenBSD: subr_disk.c,v 1.230 2017/05/04 22:47:27 deraadt Exp $ */ /* $NetBSD: subr_disk.c,v 1.17 1996/03/16 23:17:08 christos Exp $ */ /* @@ -1245,7 +1245,7 @@ disk_busy(struct disk *diskp) * time, and reset the timestamp. */ void -disk_unbusy(struct disk *diskp, long bcount, int read) +disk_unbusy(struct disk *diskp, long bcount, daddr_t blkno, int read) { struct timeval dv_time, diff_time; @@ -1273,7 +1273,8 @@ disk_unbusy(struct disk *diskp, long bcount, int read) mtx_leave(&diskp->dk_mtx); - add_disk_randomness(bcount ^ diff_time.tv_usec); + add_disk_randomness(bcount ^ diff_time.tv_usec ^ + (blkno >> 32) ^ (blkno & 0xffffffff)); } int diff --git a/sys/scsi/cd.c b/sys/scsi/cd.c index 2f453795dea..f1c3927bc73 100644 --- a/sys/scsi/cd.c +++ b/sys/scsi/cd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cd.c,v 1.218 2016/03/12 15:16:04 krw Exp $ */ +/* $OpenBSD: cd.c,v 1.219 2017/05/04 22:47:27 deraadt Exp $ */ /* $NetBSD: cd.c,v 1.100 1997/04/02 02:29:30 mycroft Exp $ */ /* @@ -622,7 +622,7 @@ cd_buf_done(struct scsi_xfer *xs) case XS_NO_CCB: /* The adapter is busy, requeue the buf and try it later. */ - disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, + disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, bp->b_blkno, bp->b_flags & B_READ); bufq_requeue(&sc->sc_bufq, bp); scsi_xs_put(xs); @@ -667,7 +667,7 @@ retry: break; } - disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, + disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, bp->b_blkno, bp->b_flags & B_READ); s = splbio(); diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c index 30fb36b2786..b964f803da3 100644 --- a/sys/scsi/sd.c +++ b/sys/scsi/sd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sd.c,v 1.269 2016/03/19 15:37:33 bluhm Exp $ */ +/* $OpenBSD: sd.c,v 1.270 2017/05/04 22:47:27 deraadt Exp $ */ /* $NetBSD: sd.c,v 1.111 1997/04/02 02:29:41 mycroft Exp $ */ /*- @@ -764,7 +764,7 @@ sd_buf_done(struct scsi_xfer *xs) case XS_NO_CCB: /* The adapter is busy, requeue the buf and try it later. */ - disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, + disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, bp->b_blkno, bp->b_flags & B_READ); bufq_requeue(&sc->sc_bufq, bp); scsi_xs_put(xs); @@ -812,7 +812,7 @@ retry: break; } - disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, + disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, bp->b_blkno, bp->b_flags & B_READ); s = splbio(); diff --git a/sys/sys/disk.h b/sys/sys/disk.h index 742a3f84d66..4dcd48839f0 100644 --- a/sys/sys/disk.h +++ b/sys/sys/disk.h @@ -1,4 +1,4 @@ -/* $OpenBSD: disk.h,v 1.35 2016/05/21 14:00:27 jsing Exp $ */ +/* $OpenBSD: disk.h,v 1.36 2017/05/04 22:47:27 deraadt Exp $ */ /* $NetBSD: disk.h,v 1.11 1996/04/28 20:22:50 thorpej Exp $ */ /* @@ -144,7 +144,7 @@ int disk_openpart(struct disk *, int, int, int); void disk_closepart(struct disk *, int, int); void disk_gone(int (*)(dev_t, int, int, struct proc *), int); void disk_busy(struct disk *); -void disk_unbusy(struct disk *, long, int); +void disk_unbusy(struct disk *, long, daddr_t, int); int disk_lock(struct disk *); void disk_lock_nointr(struct disk *); |