diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 5d02ec36e286cfe39dfc98e13a938daa6c3e58c3..3e03d5876603c82b556f22e34daf129e368f2d16 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sanitizer_common/sanitizer_platform_limits_linux.cc: Include
+	<sys/stat.h>, instead of <asm/stat.h>, if __x86_64__ is defined.
+	(struct___old_kernel_stat_sz): Don't check if __x86_64__ is defined.
+
 2013-12-05  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* configure.ac (link_sanitizer_common): Add -lm.
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
index 01de9c936c798a19bde3605f337bf13727ddb2d3..bc37df0df4981e5176d0d9f33a356d0929f98882 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
@@ -27,6 +27,9 @@
 // are not defined anywhere in userspace headers. Fake them. This seems to work
 // fine with newer headers, too.
 #include <asm/posix_types.h>
+#if defined(__x86_64__)
+#include <sys/stat.h>
+#else
 #define ino_t __kernel_ino_t
 #define mode_t __kernel_mode_t
 #define nlink_t __kernel_nlink_t
@@ -41,6 +44,7 @@
 #undef uid_t
 #undef gid_t
 #undef off_t
+#endif
 
 #include <linux/aio_abi.h>
 
@@ -58,7 +62,7 @@ namespace __sanitizer {
   unsigned struct_statfs64_sz = sizeof(struct statfs64);
 }  // namespace __sanitizer
 
-#if !defined(__powerpc64__)
+#if !defined(__powerpc64__) && !defined(__x86_64__)
 COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat));
 #endif