summaryrefslogtreecommitdiff
path: root/sys/src/9/pc/devarch.c
diff options
context:
space:
mode:
authoraiju <aiju@phicode.de>2011-07-19 15:42:00 +0200
committeraiju <aiju@phicode.de>2011-07-19 15:42:00 +0200
commit03d71535eca82570372650678eb91e447eacfb86 (patch)
tree5f41b81e2e8b1f87012e3067dc5d79360a5e4f0f /sys/src/9/pc/devarch.c
parenteee8fc8f2a9a17f194d6ecf0ddcf46bbcf6f9a66 (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.c6
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: