Re: [Bugme-new] [Bug 14832] New: futimens (AT_FDCWD, arg) should fail

From: OGAWA Hirofumi
Date: Thu Dec 24 2009 - 06:03:28 EST


Eric Blake <ebb9@xxxxxxx> writes:

>> afacit, if filename==NULL and dfd==-1 then fget() will return NULL and
>> the syscall returns -EBAFD.
>
> Yes, that's true if dfd==-1. But My complaint was not about dfd==-1, but
> about dfd==AT_FDCWD, in which case, this block of code is skipped, and you
> end up operating on the current directory ".". My point is that the line:
> if (filename == NULL && dfd != AT_FDCWD) {
> should probably be:
> if (filename == NULL) {
> assuming that fget(AT_FDCWD) likewise fails.

No, it changes utimensat() behavior. If error was EBADF, it seems fd
shouldn't be AT_FDCWD. So, this behavior would be right thing as
utimensat().

[EBADF] The path argument does not specify an absolute path and the fd
argument is neither AT_FDCWD nor a valid file descriptor open for
reading or searching.

>> Your report doesn't tell us what kernel version you're testing. We did
>> fix a few things ni this area, but it was a long time ago.
>
> Yesterday, Ulrich patched glibc to avoid the issue from the library side
> of things (I first raised the report against glibc 2 months ago, along
> with a proposed patch:
> http://sources.redhat.com/bugzilla/show_bug.cgi?id=10992). But there is
> still the case of newer kernels and unpatched glibc, where it would also
> be nice to patch the kernel. I reproduced the bug on
> 2.6.31.6-166.fc12.i686, where this test (part of coreutils' configure
> script) failed with status 2:

--
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/