tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: Problem with syscall_disestablish() - PR kern/50430
additional problems i've realised:
- this should be process specific, not LWP specific.
- we might need some way to copy this across fork().
- as l_sysent seems unreliable, we should just remove it.
> In a nut-shell, we cannot rely on the struct lwp's l_sysent member
> to determine if a particular syscall is "active", since it could be
> overwritten during signal handling. As a result, it is possible to
> unload modules which have active syscalls, and when those syscalls
> are resumed they'll return into memory that most likely no longer
> contains the syscall code. (A big "Thanks!" goes out to Masao
> Uebayashi for identifying this bug.)
ah, i think i understand this now. i wonder if any of the system
calls that support being restarted actually are modloadable (ie,
is this a non-problem?) most system calls aren't and the few that
are are pretty basic.
i have another idea.
if these calls, at entry, mark the module as "busy in proc X". then
when the unload is attempted, if X is still around, fail. that
pushes all the resources into the module again, and seems to plug
all the holes.
.mrg.
Home |
Main Index |
Thread Index |
Old Index