For future use in the Linux emulation layer call sv_onexec handler
right after the new process address space is created.
It's safe, as sv_onexec used only by Linux abi and linux_on_exec()
does not depend on a state of process VA.
Details
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Does the move after process event handler breaks existing linux_on_exec()?
sys/kern/kern_exec.c | ||
---|---|---|
1128 | This is weird place to put the call. The vmspace is indeed constructed, but not everything yet mapped into it. It is not quite logical to have e.g. shared page mapped, but stack not, when claiming that you put the callback after the vmspace is constructed. |
no, I even tested it, linux_on_exec() does not depend on process vm space noe eventhandler
sys/kern/kern_exec.c | ||
---|---|---|
1128 | well, I can put it right after the stack creation or change clarification, for linux_on_exec() it doesn't matter |
fixed, thank you,
one question, in D30900 I'll change this, sv_onexec() will return an error,
should I call vm_object_deallocate(obj) or somthing other. seems that
on if vm_map_stack() return error no resources are released
Everything done before the call is recorded as the state of the new vmspace. In case of error return, we eventually call exit1() terminate the process, and this destroys current vmspace, which holds references to the shared_page object etc.
I suggest you to make the dedicated change for making sv_onexec() possibly return an error.