On Mon, Jan 31, 2022 at 03:19:22PM +0000, Matthew Wilcox wrote: > On Mon, Jan 31, 2022 at 04:08:19PM +0100, Christian Brauner wrote: > > On Mon, Jan 31, 2022 at 10:43:52PM +0800, kernel test robot wrote: > > I can fix this rather simply in our upstream fstests with: > > > > static char *argv[] = { > > "", > > }; > > > > I guess. > > > > But doesn't > > > > static char *argv[] = { > > NULL, > > }; > > > > seem something that should work especially with execveat()? > > The problem is that the exec'ed program sees an argc of 0, which is the > problem we're trying to work around in the kernel (instead of leaving > it to ld.so to fix for suid programs). Ok, just seems a bit more intuitive for path-based exec than for fd-based execveat(). What's argv[0] supposed to contain in these cases? 1. execveat(fd, NULL, ..., AT_EMPTY_PATH) 2. execveat(fd, "my-file", ..., ) "" in both 1. and 2.? "" in 1. and "my-file" in 2.?