DF-2433 / fix.diff
# DF-2433 fix (authored post-verification; not applied to sys/) --- a/sys/dev/disk/ccd/ccd.c +++ b/sys/dev/disk/ccd/ccd.c @@ -1313,6 +1313,10 @@ ccdioctl(struct dev_ioctl_args *ap) case CCDIOCSET: if (cs->sc_flags & CCDF_INITED) return (EBUSY); if ((ap->a_fflag & FWRITE) == 0) return (EBADF); if ((error = ccdlock(cs)) != 0) return (error); + /* DF-2433: re-check under the lock (TOCTOU) */ + if (cs->sc_flags & CCDF_INITED) { + ccdunlock(cs); + return (EBUSY); + } |