diff --git a/sys/amd64/amd64/mem.c b/sys/amd64/amd64/mem.c index 96c62a636cb2..bb96e18c1156 100644 --- a/sys/amd64/amd64/mem.c +++ b/sys/amd64/amd64/mem.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -112,7 +113,7 @@ mmclose(dev, flags, fmt, p) { switch (minor(dev)) { case 14: - curproc->p_md.md_regs->tf_eflags &= ~PSL_IOPL; + p->p_md.md_regs->tf_eflags &= ~PSL_IOPL; break; default: break; @@ -132,7 +133,7 @@ mmopen(dev, flags, fmt, p) switch (minor(dev)) { case 0: case 1: - if (securelevel >= 1) + if ((flags & FWRITE) && securelevel > 0) return (EPERM); break; case 14: @@ -141,7 +142,7 @@ mmopen(dev, flags, fmt, p) return (error); if (securelevel > 0) return (EPERM); - curproc->p_md.md_regs->tf_eflags |= PSL_IOPL; + p->p_md.md_regs->tf_eflags |= PSL_IOPL; break; default: break; diff --git a/sys/i386/i386/mem.c b/sys/i386/i386/mem.c index 96c62a636cb2..bb96e18c1156 100644 --- a/sys/i386/i386/mem.c +++ b/sys/i386/i386/mem.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -112,7 +113,7 @@ mmclose(dev, flags, fmt, p) { switch (minor(dev)) { case 14: - curproc->p_md.md_regs->tf_eflags &= ~PSL_IOPL; + p->p_md.md_regs->tf_eflags &= ~PSL_IOPL; break; default: break; @@ -132,7 +133,7 @@ mmopen(dev, flags, fmt, p) switch (minor(dev)) { case 0: case 1: - if (securelevel >= 1) + if ((flags & FWRITE) && securelevel > 0) return (EPERM); break; case 14: @@ -141,7 +142,7 @@ mmopen(dev, flags, fmt, p) return (error); if (securelevel > 0) return (EPERM); - curproc->p_md.md_regs->tf_eflags |= PSL_IOPL; + p->p_md.md_regs->tf_eflags |= PSL_IOPL; break; default: break;