On Fri, Jan 09, 2015 at 10:57:43PM +0000, Al Viro wrote: > On Fri, Jan 09, 2015 at 05:42:52PM -0500, Rich Felker wrote: > > > Here's a very simple way it could work -- it could put the O_PATH fd > > on a previously-unused fd number, and put a special flag on the fd, > > like FD_CLOEXEC, but that causes the kernel to close it whenever it's > > opened. The pathname passed could then simply be /dev/fd/%d or > > /proc/self/fd/%d, and although this is presently dependent on /proc > > being mounted, virtual /dev/fd/* could someday be something completely > > independent of procfs. The kernel keeps all the freedom to choose how > > to pass the name to the interpreter. I'm not proposing any kernel > > API/ABI lock-in and I'm with you in opposing such lock-in. > > Huh? open() on procfs symlinks does *NOT* work the way - the symlink is > traversed and after that point there is no information whatsoever how we > got to that vfsmount/dentry pair. I can imagine several kludges that would > work, but they are unspeakably ugly, and do_last() is already far too > convoluted as it is.
I'm not sure where you're disagreeing with me. open of procfs symlinks does not resolve the symlink and open the resulting pathname. They are "magic symlinks" which are bound to the inode of the open file. I don't see why this action, which is already special for magic symlinks, can't check a flag on the magic symlink and possibly close the corresponding file descriptor as part of its action. In any case, whether/how fexecve works with interpreters is something the kernel can change without breaking userspace expectations. My goal is to avoid creating any new API/ABI requirement here. Rich -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/