rng-tools: 6.6 -> 6.7

Upgrade rng-tools from 6.6 to latest commit 9fc873c which 26 commits
beyond release 6.7:

$ git describe 9fc873c5af0e39263
v6.7-26-g9fc873c

Because it includes some critical fixes such as configure fails and
'Import yocto fixes for 6.6'.

* remove local patches that all are merged by upstream
* backport patch to fix rngd fails to stop issue
* add PACKAGECONFIG libp11

(From OE-Core rev: 3e09c8b5b6517da97a9ec0ce5deb4ba1b066d19b)

Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Kai Kang
2019-06-19 07:59:58 -04:00
committed by Richard Purdie
parent 17e59cab32
commit de7a2d26ec
7 changed files with 28 additions and 348 deletions

View File

@@ -1,60 +0,0 @@
From 06ba71887f667d45dd231a782a2751f36e8fe025 Mon Sep 17 00:00:00 2001
From: Christopher Larson <chris_larson@mentor.com>
Date: Mon, 15 Feb 2016 15:59:58 -0700
Subject: [PATCH 1/4] If the libc is lacking argp, use libargp
Patch pulled from Gentoo:
On glibc systems, argp is provided by libc. However, on
uclibc and other systems which lack argp in their C library,
argp might be provided by a stand alone library, libargp.
This patch adds tests to the build system to find who provides
argp.
X-Gentoo-Bug: 292191
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=292191
Reported-by: Ed Wildgoose <gentoo@wildgooses.com>
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Upstream-Status: Pending
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
---
configure.ac | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/configure.ac b/configure.ac
index 4e799dc..c4a5dd8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -135,6 +135,28 @@ AS_IF(
]
)
+dnl First check if we have argp available from libc
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <argp.h>],
+ [int argc=1; char *argv[]={"test"}; argp_parse(0,argc,argv,0,0,0); return 0;]
+ )],
+ [libc_has_argp="true"],
+ [libc_has_argp="false"]
+)
+
+dnl If libc doesn't provide argp, then test for libargp
+if test "$libc_has_argp" = "false" ; then
+ AC_MSG_WARN("libc does not have argp")
+ AC_CHECK_LIB([argp], [argp_parse], [have_argp="true"], [have_argp="false"])
+
+ if test "$have_argp" = "false"; then
+ AC_MSG_ERROR("no libargp found")
+ else
+ LIBS+=" -largp"
+ fi
+fi
+
dnl -----------------
dnl Configure options
dnl -----------------
--
2.7.4

View File

@@ -1,27 +0,0 @@
From 99b0efebd765803203686d89bc4f995bcb103e78 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Sat, 10 Nov 2018 09:53:19 +0800
Subject: [PATCH] configure.ac: fix typo
Upstream-Status: Submitted [https://github.com/nhorman/rng-tools.git]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 4e799dc..0251928 100644
--- a/configure.ac
+++ b/configure.ac
@@ -62,7 +62,7 @@ AS_IF([test $target_cpu = powerpc64le], [AC_DEFINE([HAVE_DARN],1,[Enable DARN])]
AM_CONDITIONAL([JITTER], [false])
AC_ARG_ENABLE(jitterentropy,
- AS_HELP_STRING([--disable-jitterntropy | --enable-jitterentropy=<path>],
+ AS_HELP_STRING([--disable-jitterentropy | --enable-jitterentropy=<path>],
[Disable jitterentropy source, or specify its location]),
[if [ test -d $enable_jitterentropy ]; then
export LDFLAGS+=-L$enable_jitterentropy;
--
2.7.4

View File

@@ -1,95 +0,0 @@
From 711e2f76890e3c5b08f64859d9fd913ddbec7d50 Mon Sep 17 00:00:00 2001
From: Christopher Larson <chris_larson@mentor.com>
Date: Mon, 22 Oct 2018 15:26:47 +0800
Subject: [PATCH 2/4] Add argument to control the libargp dependency
This ensures that the builds are always deterministic. If the argument isn't
passed, the default behavior is to use libargp if the libc doesn't have argp.
Upstream-Status: Pending
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Rebase to 6.6
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
configure.ac | 55 ++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 36 insertions(+), 19 deletions(-)
diff --git a/configure.ac b/configure.ac
index c4a5dd8..dd1c30f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -40,6 +40,13 @@ AC_ARG_WITH([nistbeacon],
[with_nistbeacon=check]
)
+AC_ARG_WITH([libargp],
+ AS_HELP_STRING([--without-libargp],
+ [Disable libargp support. Systems whose libc lacks argp can use libargp instead. (Default: check if libc lacks argp)]),
+ [with_libargp=$withval],
+ [with_libargp=check]
+)
+
dnl Make sure anyone changing configure.ac/Makefile.am has a clue
AM_MAINTAINER_MODE
AM_PROG_AS
@@ -135,27 +142,37 @@ AS_IF(
]
)
-dnl First check if we have argp available from libc
-AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [#include <argp.h>],
- [int argc=1; char *argv[]={"test"}; argp_parse(0,argc,argv,0,0,0); return 0;]
- )],
- [libc_has_argp="true"],
- [libc_has_argp="false"]
+dnl Determine if we need libargp: either user requested, or libc has no argp
+AS_IF(
+ [test "x$with_libargp" != "xyes"],
+ [
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <argp.h>],
+ [int argc=1; char *argv[]={"test"}; argp_parse(0,argc,argv,0,0,0); return 0;]
+ )],
+ [need_libargp=no],
+ [need_libargp=yes
+ if test "x$with_libargp" = "xno"; then
+ AC_MSG_FAILURE([libargp disabled and libc does not have argp])
+ fi]
+ )
+ ],
+ [need_libargp=yes],
)
-dnl If libc doesn't provide argp, then test for libargp
-if test "$libc_has_argp" = "false" ; then
- AC_MSG_WARN("libc does not have argp")
- AC_CHECK_LIB([argp], [argp_parse], [have_argp="true"], [have_argp="false"])
-
- if test "$have_argp" = "false"; then
- AC_MSG_ERROR("no libargp found")
- else
- LIBS+=" -largp"
- fi
-fi
+dnl Check for libargp
+AS_IF(
+ [test "x$need_libargp" = "xyes"],
+ [
+ AC_CHECK_LIB(
+ [argp],
+ [argp_parse],
+ [LIBS="$LIBS -largp"],
+ [AC_MSG_FAILURE([libargp not found])]
+ )
+ ]
+)
dnl -----------------
dnl Configure options
--
2.7.4

View File

@@ -0,0 +1,25 @@
It fails to stop rngd. It just shows warnings when stop rngd such as by:
$ systemctl stop rngd.service
but stalls shutdown untill daemon rngd is killed.
Backport patch to fix the issue.
Upstream-Status: Backport [https://bugzilla.redhat.com/show_bug.cgi?id=1690364#c8]
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
diff --git a/rngd_jitter.c b/rngd_jitter.c
index 54070ae..7a69bf9 100644
--- a/rngd_jitter.c
+++ b/rngd_jitter.c
@@ -280,7 +280,7 @@ static void *thread_entropy_task(void *data)
/* Write to pipe */
written = 0;
- while(written != me->buf_sz) {
+ while(me->active && written != me->buf_sz) {
message(LOG_DAEMON|LOG_DEBUG, "Writing to pipe\n");
ret = write(me->pipe_fd, &tmpbuf[written], me->buf_sz - written);
message(LOG_DAEMON|LOG_DEBUG, "DONE Writing to pipe with return %ld\n", ret);

View File

@@ -1,114 +0,0 @@
From d8b1bb8edd99b2898720b4f10d292a67d532db48 Mon Sep 17 00:00:00 2001
From: "Francisco Blas Izquierdo Riera (klondike)" <klondike@gentoo.org>
Date: Mon, 22 Oct 2018 15:29:36 +0800
Subject: [PATCH 4/4] Fix assemby textrels on rdrand_asm.S on PIC x86
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This patch updates the fixes in the assembly in rdrand_asm.S in
sys-apps/rng-tools-5 so it won't generate textrels on PIC systems.
The main fixes are in the use of leal in SETPTR for such systems, the rest is
the usual PIC support stuff.
This should fix Gentoo bug #469962 and help fix #518210
This patch is released under the GPLv2 or a higher version license as is the
original file as long as the author and the tester are credited.
Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=469962
Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=518210
Signed-off-by: Francisco Blas Izquierdo Riera (klondike) <klondike@gentoo.org>
Reported-by: cilly <cilly@cilly.mine.nu>
Reported-by: Manuel Rüger <mrueg@gentoo.org>
Tested-by: Anthony Basile <blueness@gentoo.org>
Upstream-Status: Pending
---
rdrand_asm.S | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/rdrand_asm.S b/rdrand_asm.S
index b5d260a..7811cf2 100644
--- a/rdrand_asm.S
+++ b/rdrand_asm.S
@@ -2,6 +2,7 @@
* Copyright (c) 2011-2014, Intel Corporation
* Authors: Fenghua Yu <fenghua.yu@intel.com>,
* H. Peter Anvin <hpa@linux.intel.com>
+ * PIC code by: Francisco Blas Izquierdo Riera (klondike) <klondike@gentoo.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -172,7 +173,19 @@ ENTRY(x86_rdseed_or_rdrand_bytes)
jmp 4b
ENDPROC(x86_rdseed_or_rdrand_bytes)
+#if defined(__PIC__)
+#define INIT_PIC() \
+ pushl %ebx ; \
+ call __x86.get_pc_thunk.bx ; \
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+#define END_PIC() \
+ popl %ebx
+#define SETPTR(var,ptr) leal (var)@GOTOFF(%ebx),ptr
+#else
+#define INIT_PIC()
+#define END_PIC()
#define SETPTR(var,ptr) movl $(var),ptr
+#endif
#define PTR0 %eax
#define PTR1 %edx
#define PTR2 %ecx
@@ -188,6 +201,7 @@ ENTRY(x86_aes_mangle)
movl 8(%ebp), %eax
movl 12(%ebp), %edx
push %esi
+ INIT_PIC()
#endif
movl $512, CTR3 /* Number of rounds */
@@ -278,6 +292,7 @@ offset = offset + 16
movdqa %xmm7, (7*16)(PTR1)
#ifdef __i386__
+ END_PIC()
pop %esi
pop %ebp
#endif
@@ -292,6 +307,7 @@ ENTRY(x86_aes_expand_key)
push %ebp
mov %esp, %ebp
movl 8(%ebp), %eax
+ INIT_PIC()
#endif
SETPTR(aes_round_keys, PTR1)
@@ -321,6 +337,7 @@ ENTRY(x86_aes_expand_key)
call 1f
#ifdef __i386__
+ END_PIC()
pop %ebp
#endif
ret
@@ -341,6 +358,16 @@ ENTRY(x86_aes_expand_key)
ENDPROC(x86_aes_expand_key)
+#if defined(__i386__) && defined(__PIC__)
+ .section .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
+ .globl __x86.get_pc_thunk.bx
+ .hidden __x86.get_pc_thunk.bx
+ .type __x86.get_pc_thunk.bx, @function
+__x86.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+#endif
+
.bss
.balign 64
aes_round_keys:
--
2.7.4

View File

@@ -1,46 +0,0 @@
From 03fe7efa1bc04a83fb9b6787998e7baa7ee90646 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Mon, 22 Oct 2018 15:27:41 +0800
Subject: [PATCH 3/4] Fix underquoted m4 entry. This causes a failure if gcrypt
isn't present:
| configure: libgcrypt support disabled
| ../rng-tools-5/configure: line 4345: ac_fn_c_try_link: command not found
| configure: error: in `/media/build1/poky/build/tmp/work/i586-poky-linux/rng-tools/5-r0/build':
RP
2016/2/16
Upstream-Status: Pending
Rebase to 6.6
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index dd1c30f..88d2be3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -124,7 +124,7 @@ AS_IF(
[test "x$with_libgcrypt" != "xno"],
[
AC_CHECK_HEADER([gcrypt.h],
- AC_CHECK_LIB(
+ [AC_CHECK_LIB(
[gcrypt],
[gcry_check_version], ,
[
@@ -133,7 +133,7 @@ AS_IF(
AC_MSG_NOTICE([libgcrypt support disabled])
fi
]
- ),
+ )],
[if test "x$with_libgcrypt" != "xcheck"; then
AC_MSG_FAILURE([libgcrypt headers not found]); else
AC_MSG_NOTICE([libgcrypt support disabled])
--
2.7.4

View File

@@ -10,16 +10,12 @@ DEPENDS = "sysfsutils"
SRC_URI = "\
git://github.com/nhorman/rng-tools.git \
file://0001-If-the-libc-is-lacking-argp-use-libargp.patch \
file://0002-Add-argument-to-control-the-libargp-dependency.patch \
file://underquote.patch \
file://rng-tools-5-fix-textrels-on-PIC-x86.patch \
file://0001-configure.ac-fix-typo.patch \
file://fix-rngd-fail-to-stop.patch \
file://init \
file://default \
file://rngd.service \
"
SRCREV = "4ebc21d6f387bb7b4b3f6badc429e27b21c0a6ee"
SRCREV = "9fc873c5af0e392632e6b736938b811f7ca97251"
S = "${WORKDIR}/git"
@@ -31,6 +27,7 @@ PACKAGECONFIG_libc-musl = "libargp libjitterentropy"
PACKAGECONFIG[libargp] = "--with-libargp,--without-libargp,argp-standalone,"
PACKAGECONFIG[libgcrypt] = "--with-libgcrypt,--without-libgcrypt,libgcrypt,"
PACKAGECONFIG[libjitterentropy] = "--enable-jitterentropy,--disable-jitterentropy,libjitterentropy"
PACKAGECONFIG[libp11] = "--with-pkcs11,--without-pkcs11,libp11 openssl"
PACKAGECONFIG[nistbeacon] = "--with-nistbeacon,--without-nistbeacon,curl libxml2 openssl"
INITSCRIPT_NAME = "rng-tools"