In article <[email protected]>, Taylor R Campbell <[email protected]> wrote: >> Date: Tue, 10 Sep 2019 10:52:47 -0400 >> From: [email protected] (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
