Hi, On 25 January 2011 15:32, Eric Blake <eblake@xxxxxxxxxx> wrote: > > 7. fchmodat(AT_FDCWD, "") must fail with ENOENT. ÂApparently, the kernel > currently modifies ".", although point 1 says it might make more sense > to fail with ENOENT so that glibc doesn't have to do as much work in > chmod and fchmodat (if the kernel call does not change, then the burden > is on glibc). Interesting discussion, but I'm very embarrassed to say I started it due to a mis-diagnosis of a bug :-( In fact, the current kernels *do* check for an empty string, and do so in order to maintain POSIX compliance, per Eric's points 5 and 7. See fs/namei.c in do_getname, circa line 114, where we read: * POSIX.1 2.4: an empty pathname is invalid (ENOENT). This is backed up with code, circa line 129 ff: retval = strncpy_from_user(page, filename, len); ... else if (!retval) retval = -ENOENT; return retval; So an empty string will have length zero, and the ENOENT is indeed set. This handles cases 5 & 7. I've no idea how any of the other cases work out. Note that getname() is used in a variety of places; its not just chmod, but also in symlinks and many others. --linas -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html