tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: more fexecve questions



In article <20190910150418.BECAB6051C%jupiter.mumble.net@localhost>,
Taylor R Campbell  <campbell+netbsd-tech-kern%mumble.net@localhost> wrote:
>> Date: Tue, 10 Sep 2019 10:52:47 -0400
>> From: christos%zoulas.com@localhost (Christos Zoulas)
>> 
>> 1. Looks like FreeBSD (and my initial posting) leaves the file descriptor
>>    of the executable open in the process's image. The Linux man page says
>>    to set close-on-exec if you don't want it to be passed to the child
>>    process. Which behavior do you prefer? To have fexecve close the fd
>>    automatically or to leave it up to the caller? It seems less magical
>>    to leave it to the caller, but it also requires action from the caller.
>
>I don't see why fexec should behave differently from exec in the
>decision of which fds stay open.  We already have a mechanism to
>request any other fd be closed on exec.

Fine,

>> 2. I am setting the path of the executable to "/" and p_comm to "*fexecve*".
>>    I could also do a reverse lookup and set them to the path of the binary,
>>    I found and default to "/" and "*fexecve*" if that's not found. I know
>>    people don't like those reverse lookups because of the vnode cache
>>    issues...
>
>Can we just cache these when the file descriptor is opened with
>O_EXEC?
>
>The cache could become stale if the executable or any parent directory
>is moved or deleted.  But they could become stale after exec too for
>the same reason.

I guess we could, since the problem is that if the filename is greater than
NCHNAMLEN, they will not be cached. But I am not familiar enough with the
cache to make the changes required.

Finally I should fix the code so that it works for scripts. It currently
does not.

christos



Home | Main Index | Thread Index | Old Index