From 265cdeddb7d5eddf2290fb4eaf620ae198f9d2cf Mon Sep 17 00:00:00 2001 From: Bruce Evans Date: Sun, 26 Dec 1999 11:44:45 +0000 Subject: [PATCH] Fixed breakage of read-only opening of /dev/*mem at securelevel > 0 in previous pair of commits. Spell the "securelevel > 0" check consistently. Use the proc arg instead of curproc in mmopen() and mmclose(). --- sys/amd64/amd64/mem.c | 7 ++++--- sys/i386/i386/mem.c | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/sys/amd64/amd64/mem.c b/sys/amd64/amd64/mem.c index 96c62a636cb..bb96e18c115 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 96c62a636cb..bb96e18c115 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;