Page MenuHomeFreeBSD

Call sv_onexec handler after the process VA is created.
ClosedPublic

Authored by dchagin on Jun 25 2021, 3:46 PM.
Tags
None
Referenced Files
F102638459: D30899.diff
Fri, Nov 15, 4:31 AM
Unknown Object (File)
Thu, Nov 7, 5:28 PM
Unknown Object (File)
Thu, Oct 31, 3:25 AM
Unknown Object (File)
Sun, Oct 20, 10:01 AM
Unknown Object (File)
Sun, Oct 20, 10:01 AM
Unknown Object (File)
Sun, Oct 20, 10:01 AM
Unknown Object (File)
Sun, Oct 20, 10:01 AM
Unknown Object (File)
Sun, Oct 20, 10:01 AM
Subscribers

Details

Summary

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.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 40102
Build 36991: arc lint + arc unit

Event Timeline

Does the move after process event handler breaks existing linux_on_exec()?

sys/kern/kern_exec.c
1116

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.

In D30899#695137, @kib wrote:

Does the move after process event handler breaks existing linux_on_exec()?

no, I even tested it, linux_on_exec() does not depend on process vm space noe eventhandler

sys/kern/kern_exec.c
1116

well, I can put it right after the stack creation or change clarification, for linux_on_exec() it doesn't matter

move linux_on_exec() call below, after the stack is created

sys/kern/kern_exec.c
1116

Then move it to the very end of the function, right before return.

1157

Move the call right before this return.

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

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.

This revision is now accepted and ready to land.Jun 26 2021, 12:08 AM