[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20110125174515.C1DC2183C19@magilla.sf.frob.com>
Date: Tue, 25 Jan 2011 09:45:15 -0800 (PST)
From: Roland McGrath <roland@...hat.com>
To: Arnd Bergmann <arnd@...db.de>
Cc: linasvepstas@...il.com, Chris Metcalf <cmetcalf@...era.com>,
GLIBC Devel <libc-alpha@...rceware.org>,
linux-kernel@...r.kernel.org, libc-ports@...rceware.org,
linux-api@...r.kernel.org, Mike Frysinger <vapier@...too.org>
Subject: Re: [BUG] Generic syscalls -- chmod vs. fchmodat
> My feeling is that it should be in glibc: as Mike mentioned, we don't normally
> change the behavior of existing system calls unless they are obviously
> broken to start with. If we want to keep fchmodat getting the implicit
> "." directory, and at the same time keep fchmod returning an error, the fchmod
> wrapper around fchmodat is the only place that can enforce this.
My point was that it's quite arguable that the *at syscall interfaces were
broken to begin with. I've never seen anything suggesting their intent was
other than to permit relative pathnames, and the empty string has never
been a valid relative pathname. To fit the POSIX requirements as I read
them, the *at functions must refuse to resolve the empty string. So if the
kernel does not change and my interpretation of POSIX stands, then libc
must wrap all the *at syscalls with a function that checks for the empty
string and fails with ENOENT as a special case.
I don't have any strong opinion about this subject, but it makes the most
sense to me for the kernel's behavior to change. I know of no reason to
think that the current treatment of the empty string was ever intended at
the creation of the *at interfaces.
Thanks,
Roland
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists