DF-4279 / fix.diff
--- a/sys/dev/disk/ccd/ccd.c +++ b/sys/dev/disk/ccd/ccd.c @@ -1316,6 +1316,13 @@ if ((error = ccdlock(cs)) != 0) return (error); + if (ccio->ccio_ileave < 0) { + kprintf("ccd%d: invalid interleave %d\n", + unit, ccio->ccio_ileave); + ccdunlock(cs); + return (EINVAL); + } + if (ccio->ccio_ndisks > CCD_MAXNDISKS) { ccdunlock(cs); return (EINVAL); @@ -1431,7 +1438,7 @@ if ((error = ccdlock(cs)) != 0) return (error); - if (dev_drefs(cs->sc_dev) > 1) { + if (disk_getopencount(&cs->sc_disk) > 1) { ccdunlock(cs); return (EBUSY); } |