diff options
author | CoprDistGit <infra@openeuler.org> | 2024-08-03 06:28:41 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2024-08-03 06:28:41 +0000 |
commit | d20db0561a6a36f914fde030512503b114ef9a0c (patch) | |
tree | d4e5e3494d95c269a1cee6195f11bf3201bcadbf /timex-Use-64-bit-fields-on-32-bit-TIMESIZE-64-system.patch | |
parent | 016343d99b1b269d7246ef1e143d4b54914433d4 (diff) |
automatic import of glibcopeneuler22.03_LTS_SP4openeuler22.03_LTS_SP3openeuler20.03
Diffstat (limited to 'timex-Use-64-bit-fields-on-32-bit-TIMESIZE-64-system.patch')
-rw-r--r-- | timex-Use-64-bit-fields-on-32-bit-TIMESIZE-64-system.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/timex-Use-64-bit-fields-on-32-bit-TIMESIZE-64-system.patch b/timex-Use-64-bit-fields-on-32-bit-TIMESIZE-64-system.patch new file mode 100644 index 0000000..3c6d72b --- /dev/null +++ b/timex-Use-64-bit-fields-on-32-bit-TIMESIZE-64-system.patch @@ -0,0 +1,45 @@ +From 1d550265a75b412cea4889a50b101395f6a8e025 Mon Sep 17 00:00:00 2001 +From: Stafford Horne <shorne@gmail.com> +Date: Fri, 15 Oct 2021 06:17:41 +0900 +Subject: [PATCH] timex: Use 64-bit fields on 32-bit TIMESIZE=64 systems (BZ + #28469) + +This was found when testing the OpenRISC port I am working on. These +two tests fail with SIGSEGV: + + FAIL: misc/tst-ntp_gettime + FAIL: misc/tst-ntp_gettimex + +This was found to be due to the kernel overwriting the stack space +allocated by the timex structure. The reason for the overwrite being +that the kernel timex has 64-bit fields and user space code only +allocates enough stack space for timex with 32-bit fields. + +On 32-bit systems with TIMESIZE=64 __USE_TIME_BITS64 is not defined. +This causes the timex structure to use 32-bit fields with type +__syscall_slong_t. + +This patch adjusts the ifdef condition to allow 32-bit systems with +TIMESIZE=64 to use the 64-bit long long timex definition. + +Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> +--- + sysdeps/unix/sysv/linux/bits/timex.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sysdeps/unix/sysv/linux/bits/timex.h b/sysdeps/unix/sysv/linux/bits/timex.h +index ee37694..4a5db6d 100644 +--- a/sysdeps/unix/sysv/linux/bits/timex.h ++++ b/sysdeps/unix/sysv/linux/bits/timex.h +@@ -25,7 +25,7 @@ + + struct timex + { +-# ifdef __USE_TIME_BITS64 ++# if defined __USE_TIME_BITS64 || (__TIMESIZE == 64 && __WORDSIZE == 32) + unsigned int modes; /* mode selector */ + int :32; /* pad */ + long long offset; /* time offset (usec) */ +-- +1.8.3.1 + |