mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: David Miller <davem@davemloft.net>
To: jengelh@medozas.de
Cc: sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: fstat seems broken on sparc64
Date: Sun, 10 Jan 2010 22:42:53 -0800 (PST)	[thread overview]
Message-ID: <20100110.224253.00558907.davem@davemloft.net> (raw)
In-Reply-To: <alpine.LSU.2.01.1001102347280.23052@obet.zrqbmnf.qr>

From: Jan Engelhardt <jengelh@medozas.de>
Date: Mon, 11 Jan 2010 00:15:17 +0100 (CET)

> On Sunday 2010-01-10 22:11, David Miller wrote:
>>
>>> libc6   2.10.2-4
>>
>>Perfect, now you just have to audit what changed between the -2 and
>>the -4 package to find the bug :-)
> 
> I really do not believe you when you say your glibc is not affected.

Why not :-)

davem@sunset:~$ dpkg-query -W | grep libc6-sparc64
libc6-sparc64	2.10.2-2
davem@sunset:~$ cat fstat_test.c
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	struct stat sb;
	int fd = open("foo", O_RDWR | O_CREAT, 0666);

	if (fd < 0)
		abort();
	if (fstat(fd, &sb) < 0)
		abort();
	printf("%lu.%lu\n", sb.st_mtim.tv_sec, sb.st_mtim.tv_nsec);
	if (stat("foo", &sb) < 0)
		abort();
	printf("%lu.%lu\n", sb.st_mtim.tv_sec, sb.st_mtim.tv_nsec);
	if (fstatat(AT_FDCWD, "foo", &sb, 0) < 0)
		abort();
	printf("%lu.%lu\n", sb.st_mtim.tv_sec, sb.st_mtim.tv_nsec);
	return 0;
}
davem@sunset:~$ gcc -m64 -o fstat_test fstat_test.c
davem@sunset:~$ ./fstat_test
1261510364.0
1261510364.0
1261510364.0
davem@sunset:~$ 

But, indeed when I run it under strace64 it goes:

open("foo", O_RDWR|O_CREAT, 0666)       = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0

I wonder why I get a sane output from the test program even though
it's not using fstat64.

>  - I now found and fixed the problem, here is the patch for
>    you to study (as code speaks louder)
> 
> Index: glibc-2.10.1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c
> ===================================================================
> --- glibc-2.10.1.orig/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c
> +++ glibc-2.10.1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c
> @@ -1 +1 @@
> -#include "../../fxstat.c"
> +#include "../../i386/fxstat.c"
> 
> (Hint: Compare with sparc64/lxstat.c

Thanks a lot!

Please submit this to the glibc/eglibc folks for inclusion!

  reply	other threads:[~2010-01-11  6:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <alpine.LSU.2.01.0912141511280.27692@obet.zrqbmnf.qr>
     [not found] ` <20091214.233840.236673621.davem@davemloft.net>
     [not found]   ` <alpine.LSU.2.01.1001082355250.20848@obet.zrqbmnf.qr>
     [not found]     ` <20100110.131158.242584083.davem@davemloft.net>
2010-01-10 23:15       ` Jan Engelhardt
2010-01-11  6:42         ` David Miller [this message]
2010-01-11  9:06           ` Jan Engelhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100110.224253.00558907.davem@davemloft.net \
    --to=davem@davemloft.net \
    --cc=jengelh@medozas.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sparclinux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®