diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 8b2eb82..8e5aaa0 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,10 @@
+2014-12-29  David Abdurachmanov  <davidlt@cern.ch>
+
+	PR sanitizer/64435
+	* sanitizer_common/sanitizer_platform_limits_posix.h: Include linux/version.h
+	for Linux, set __sanitizer___kernel_old_{uid,gid}_t to unsigned int for
+	<=3.15 kernel.
+
 2014-12-16  Jakub Jelinek  <jakub@redhat.com>
 
 	* sanitizer_common/sanitizer_symbolizer_libbacktrace.cc,
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
index 139fe0a..0cc3c3e 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -16,6 +16,10 @@
 #include "sanitizer_internal_defs.h"
 #include "sanitizer_platform.h"
 
+#if SANITIZER_LINUX
+#include <linux/version.h>
+#endif
+
 namespace __sanitizer {
   extern unsigned struct_utsname_sz;
   extern unsigned struct_stat_sz;
@@ -470,7 +474,9 @@ namespace __sanitizer {
   typedef long __sanitizer___kernel_off_t;
 #endif
 
-#if defined(__powerpc__) || defined(__mips__)
+#if defined(__powerpc__) || defined(__mips__) \
+    || (defined(__aarch64__) && SANITIZER_LINUX \
+        && LINUX_VERSION_CODE <= KERNEL_VERSION(3, 15, 0))
   typedef unsigned int __sanitizer___kernel_old_uid_t;
   typedef unsigned int __sanitizer___kernel_old_gid_t;
 #else
