diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-05-21 16:36:11 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-05-21 16:36:11 +0200 |
commit | 760e539811001f569fc24d988e72c0b1eef81cd7 (patch) | |
tree | 7e4efd18a56a66f5c6d02d88b3f98758ab2498be /sys/src/9/port/devproc.c | |
parent | 1dc5f9222a0cddf21414f20731d791ffc0416599 (diff) |
kernel: avoid panic with segio and SG_FAULT segments
the problem is that segio doesnt check segment attributes
and it can't really in case of SG_FAULT which can be
inherited from pseg and toggle at any time.
so instead of returning -1 from fault into the fault$cputype
handler which then panics when fault happend kernel mode,
we jump into segio's waserror() block just like in the
demand load i/o error case (faulterror()).
Diffstat (limited to 'sys/src/9/port/devproc.c')
-rw-r--r-- | sys/src/9/port/devproc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/src/9/port/devproc.c b/sys/src/9/port/devproc.c index f55b9bb89..b6b51959c 100644 --- a/sys/src/9/port/devproc.c +++ b/sys/src/9/port/devproc.c @@ -921,7 +921,7 @@ procread(Chan *c, void *va, long n, vlong off) continue; j += sprint(statbuf+j, "%-6s %c%c %8p %8p %4ld\n", sname[sg->type&SG_TYPE], - sg->type&SG_RONLY ? 'R' : ' ', + sg->type&SG_FAULT ? 'F' : (sg->type&SG_RONLY ? 'R' : ' '), sg->profile ? 'P' : ' ', sg->base, sg->top, sg->ref); } |