Re: Revised statx(2) man page for review [and AT_EMPTY_PATH question]

From: Al Viro
Date: Wed Apr 26 2017 - 11:53:15 EST


On Wed, Apr 26, 2017 at 12:35:08PM +0100, David Howells wrote:

> AT_EMPTY_PATH wasn't there back in 2010. I could eliminate the:
>
> statx(fd, NULL, 0, ...);
>
> option in favour of:
>
> statx(fd, "", AT_EMPTY_PATH, ...);
>
> Any thoughts either way, Al?
>
> It would seem that AT_EMPTY_PATH should be redundant, though, since you can
> just set the pathname pointer to NULL.

NULL pathname pointer means an error for a lot of existing syscalls, so
if you want to turn them into wrappers for ...at() ones at libc level,
you'd need to do special-casing of NULL both kernel-side and in libc wrappers.

Requiring "" + AT_EMPTY_PATH means a single dereference of userland pointer.
OTOH, that's not a terrible burden...