forked from pool/jitterentropy
Accepting request 1073856 from home:pmonrealgonzalez:branches:devel:libraries:c_c++
OBS-URL: https://build.opensuse.org/request/show/1073856 OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/jitterentropy?expand=0&rev=12
This commit is contained in:
parent
b2f2ba9a4f
commit
e4979ea693
70
jitterentropy-fix-a-stack-corruption-on-s390x.patch
Normal file
70
jitterentropy-fix-a-stack-corruption-on-s390x.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
From 7bf9f85d32bc6b809ca687d772bc41bd9c0ecdd8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladis Dronov <vdronov@redhat.com>
|
||||||
|
Date: Tue, 27 Dec 2022 13:45:03 +0100
|
||||||
|
Subject: [PATCH] fix a stack corruption on s390x
|
||||||
|
|
||||||
|
Output size of the STCKE command on s390x is 16 bytes, compared to 8 bytes
|
||||||
|
of the STCK command. Fix a stack corruption in the s390x version of
|
||||||
|
jent_get_nstime(). Add some more detailed information on the STCKE command.
|
||||||
|
|
||||||
|
Signed-off-by: Stephan Mueller <smueller@chronox.de>
|
||||||
|
---
|
||||||
|
jitterentropy-base-user.h | 43 ++++++++++++++++++++++++++++++++++-----
|
||||||
|
1 file changed, 38 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/jitterentropy-base-user.h b/jitterentropy-base-user.h
|
||||||
|
index b7d21e8..625767a 100644
|
||||||
|
--- a/jitterentropy-base-user.h
|
||||||
|
+++ b/jitterentropy-base-user.h
|
||||||
|
@@ -129,13 +129,46 @@ static inline void jent_get_nstime(uint64_t *out)
|
||||||
|
|
||||||
|
static inline void jent_get_nstime(uint64_t *out)
|
||||||
|
{
|
||||||
|
- uint64_t clk;
|
||||||
|
+ /*
|
||||||
|
+ * This is MVS+STCK code! Enable it with -S in the compiler.
|
||||||
|
+ *
|
||||||
|
+ * uint64_t clk;
|
||||||
|
+ * __asm__ volatile("stck %0" : "=m" (clk) : : "cc");
|
||||||
|
+ * *out = (uint64_t)(clk);
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * This is GCC+STCKE code. STCKE command and data format:
|
||||||
|
+ * z/Architecture - Principles of Operation
|
||||||
|
+ * http://publibz.boulder.ibm.com/epubs/pdf/dz9zr007.pdf
|
||||||
|
+ *
|
||||||
|
+ * The current value of bits 0-103 of the TOD clock is stored in bytes
|
||||||
|
+ * 1-13 of the sixteen-byte output:
|
||||||
|
+ *
|
||||||
|
+ * bits 0-7: zeros (reserved for future extention)
|
||||||
|
+ * bits 8-111: TOD Clock value
|
||||||
|
+ * bits 112-127: Programmable Field
|
||||||
|
+ *
|
||||||
|
+ * Output bit 59 (TOD-Clock bit 51) effectively increments every
|
||||||
|
+ * microsecond. Bits 60 to 111 of STCKE output are fractions of
|
||||||
|
+ * a miscrosecond: bit 59 is 1.0us, bit 60 is .5us, bit 61 is .25us,
|
||||||
|
+ * bit 62 is .125us, bit 63 is 62.5ns, etc.
|
||||||
|
+ *
|
||||||
|
+ * Some of these bits can be implemented, some not. 64 bits of
|
||||||
|
+ * the TOD clock are implemented usually nowadays, these are
|
||||||
|
+ * bits 8-71 of the output.
|
||||||
|
+ *
|
||||||
|
+ * The stepping value of TOD-clock bit position 63, if implemented,
|
||||||
|
+ * is 2^-12 microseconds, or approximately 244 picoseconds. This value
|
||||||
|
+ * is called a clock unit.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+ uint8_t clk[16];
|
||||||
|
|
||||||
|
- /* this is MVS code! enable with -S in the compiler */
|
||||||
|
- /*__asm__ volatile("stck %0" : "=m" (clk) : : "cc"); */
|
||||||
|
- /* this is gcc */
|
||||||
|
asm volatile("stcke %0" : "=Q" (clk) : : "cc");
|
||||||
|
- *out = (uint64_t)(clk);
|
||||||
|
+
|
||||||
|
+ /* s390x is big-endian, so just perfom a byte-by-byte copy */
|
||||||
|
+ *out = *(uint64_t *)(clk + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#elif defined(__powerpc)
|
@ -1,3 +1,14 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Mar 22 11:17:59 UTC 2023 - Pedro Monreal <pmonreal@suse.com>
|
||||||
|
|
||||||
|
- Fix a stack corruption on s390x: [bsc#1209627]
|
||||||
|
* Output size of the STCKE command on s390x is 16 bytes, compared
|
||||||
|
to 8 bytes of the STCK command. Fix a stack corruption in the
|
||||||
|
s390x version of jent_get_nstime(). Add some more detailed
|
||||||
|
information on the STCKE command.
|
||||||
|
* github.com/smuellerDD/jitterentropy-library/commit/7bf9f85
|
||||||
|
* Add jitterentropy-fix-a-stack-corruption-on-s390x.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Sep 12 07:04:35 UTC 2022 - Marcus Meissner <meissner@suse.com>
|
Mon Sep 12 07:04:35 UTC 2022 - Marcus Meissner <meissner@suse.com>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package jitterentropy
|
# spec file for package jitterentropy
|
||||||
#
|
#
|
||||||
# Copyright (c) 2022 SUSE LLC
|
# Copyright (c) 2023 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -25,6 +25,8 @@ Release: 0
|
|||||||
URL: https://github.com/smuellerDD/jitterentropy-library
|
URL: https://github.com/smuellerDD/jitterentropy-library
|
||||||
Source0: https://github.com/smuellerDD/jitterentropy-library/archive/refs/tags/v%{version}.tar.gz
|
Source0: https://github.com/smuellerDD/jitterentropy-library/archive/refs/tags/v%{version}.tar.gz
|
||||||
Source1: baselibs.conf
|
Source1: baselibs.conf
|
||||||
|
#PATCH-FIX-UPSTREAM github.com/smuellerDD/jitterentropy-library/commit/7bf9f85
|
||||||
|
Patch0: jitterentropy-fix-a-stack-corruption-on-s390x.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The Jitter RNG provides a noise source using the CPU execution
|
The Jitter RNG provides a noise source using the CPU execution
|
||||||
|
Loading…
Reference in New Issue
Block a user