Hi Andy,
Andrew Valencia wrote:
>
I just thought about this one a little more...
> syscall argument handling was indeed broken, as was copyin/copyout, which no
> longer used the t_probe to protect themselves. This was all rather hidden
> by the fault handling code, which assumed that any reference to a virtual
> address in the 0x80000000..0xffffffff range should result in the current
> process being killed. Very questionable in any case, but spectacular when
> it happens from an interrupt handler with no current process!
Two things puzzle me a little about this - if a process attempts to use an
invalid pointer reference when calling a syscall I'd have thought it pretty
reasonable to notify a fault? It's trying to do something naughty - much as
if it was trying to do a NULL pointer reference. The query is what
circumstances would cause one of our interrupt handlers to attempt to do
anything with user-space? I thought all we did was queue an interrupt
message, or call hardclock()?
I guess it's not a great problem as the copyin()/copyout() code can be made
to inline the t_probe stuff reasonably easily (I had it do this a while
back), but I'm trying to understand what I missed. I've clocked up days of
uptime without seeing any problems with this code - both with heavy (loadavg
> 5) and no loading).
Regards,
Dave
Received on Mon Mar 6 02:20:34 1995
This archive was generated by hypermail 2.1.8 : Thu Sep 22 2005 - 15:12:17 PDT