[klibc] [klibc:master] ppc64: fix struct stat

klibc-bot for Aurelien Jarno aurelien at aurel32.net
Tue Jan 5 17:54:05 PST 2016

Commit-ID:  ce358438679db7488f36706feaf64d6d5ab84ad6
Gitweb:     http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=ce358438679db7488f36706feaf64d6d5ab84ad6
Author:     Aurelien Jarno <aurelien at aurel32.net>
AuthorDate: Wed, 6 Jan 2016 00:44:16 +0000
Committer:  H. Peter Anvin <hpa at linux.intel.com>
CommitDate: Tue, 5 Jan 2016 17:45:55 -0800

[klibc] ppc64: fix struct stat

On ppc64 the struct stat defined by klibc matches the kernel one.
However it contains implicit padding before the st_rdev field due to the
64-bit alignement. For internal reasons, klibc defines st_rdev as a pair
of 32-bit values (using the __stdev64 macro). They only need to be
32-bit aligned and as a consequence st->st_rdev is incorrectly defined.

The solution is to add an explicit padding in the structure. This fixes
the resume binary on ppc64 BE and LE, and probably other things.

Signed-off-by: Aurelien Jarno <aurelien at aurel32.net>
Link: http://lkml.kernel.org/r/20160106004416.GG28542@decadent.org.uk
Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>

 usr/include/arch/ppc64/klibc/archstat.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/usr/include/arch/ppc64/klibc/archstat.h b/usr/include/arch/ppc64/klibc/archstat.h
index 918d810..0bbbff3 100644
--- a/usr/include/arch/ppc64/klibc/archstat.h
+++ b/usr/include/arch/ppc64/klibc/archstat.h
@@ -12,6 +12,7 @@ struct stat {
 	mode_t		st_mode;
 	uid_t 		st_uid;
 	gid_t 		st_gid;
+	unsigned int	__pad1;
 	__stdev64	(st_rdev);
 	off_t		st_size;
 	unsigned long  	st_blksize;

More information about the klibc mailing list