diff options
author | aiju <aiju@phicode.de> | 2011-07-19 15:42:00 +0200 |
---|---|---|
committer | aiju <aiju@phicode.de> | 2011-07-19 15:42:00 +0200 |
commit | 03d71535eca82570372650678eb91e447eacfb86 (patch) | |
tree | 5f41b81e2e8b1f87012e3067dc5d79360a5e4f0f /sys/src/9/pc/devarch.c | |
parent | eee8fc8f2a9a17f194d6ecf0ddcf46bbcf6f9a66 (diff) |
reading from/writing to non-existant MSRs via /dev/msr no longer crashes the system
Diffstat (limited to 'sys/src/9/pc/devarch.c')
-rw-r--r-- | sys/src/9/pc/devarch.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/src/9/pc/devarch.c b/sys/src/9/pc/devarch.c index 3228736ee..46c98b19c 100644 --- a/sys/src/9/pc/devarch.c +++ b/sys/src/9/pc/devarch.c @@ -397,7 +397,8 @@ archread(Chan *c, void *a, long n, vlong offset) error(Ebadarg); vp = a; for(port = offset; port < offset+n; port += 8) - rdmsr(port, vp++); + if(tryrdmsr(port, vp++) < 0) + error(Ebadarg); return n; case Qioalloc: @@ -475,7 +476,8 @@ archwrite(Chan *c, void *a, long n, vlong offset) error(Ebadarg); vp = a; for(port = offset; port < offset+n; port += 8) - wrmsr(port, *vp++); + if(trywrmsr(port, *vp++) < 0) + error(Ebadarg); return n; default: |