summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gentoo.org>2019-10-24 14:40:06 -0700
committerMatt Turner <mattst88@gentoo.org>2019-10-24 14:41:11 -0700
commit7220652e183226ea736d7c59359e88c3c0b3f00d (patch)
tree12cf3f983f1975c9cdc1b190216c3e5e8aa24370 /sys-apps/rng-tools/files
parentmedia-libs/libglvnd: Update homepage/git repo to freedesktop.org (diff)
downloadgentoo-7220652e183226ea736d7c59359e88c3c0b3f00d.tar.gz
gentoo-7220652e183226ea736d7c59359e88c3c0b3f00d.tar.bz2
gentoo-7220652e183226ea736d7c59359e88c3c0b3f00d.zip
sys-apps/rng-tools: Add patch to help rngd shutdown
Signed-off-by: Matt Turner <mattst88@gentoo.org>
Diffstat (limited to 'sys-apps/rng-tools/files')
-rw-r--r--sys-apps/rng-tools/files/rngd-shutdown.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/sys-apps/rng-tools/files/rngd-shutdown.patch b/sys-apps/rng-tools/files/rngd-shutdown.patch
new file mode 100644
index 000000000000..ba2fffdd86f6
--- /dev/null
+++ b/sys-apps/rng-tools/files/rngd-shutdown.patch
@@ -0,0 +1,37 @@
+https://bugzilla.redhat.com/show_bug.cgi?id=1690364
+
+diff --git a/rngd_jitter.c b/rngd_jitter.c
+index 23d96b3..43a13e0 100644
+--- a/rngd_jitter.c
++++ b/rngd_jitter.c
+@@ -473,26 +473,22 @@ void close_jitter_entropy_source(struct rng *ent_src)
+ for (i=0; i < num_threads; i++)
+ tdata[i].active = 0;
+
+- flags = fcntl(pipefds[1], F_GETFL, 0);
+- flags |= O_NONBLOCK;
+- fcntl(pipefds[1], F_SETFL, &flags);
++ close(pipefds[1]);
+
+ /* And wait for completion of each thread */
+ for (i=0; i < num_threads; i++) {
+ message(LOG_DAEMON|LOG_DEBUG, "Checking on done for thread %d\n", i);
+ while (!tdata[i].done)
++ pthread_kill(threads[i], SIGINT);
+ if(tdata[i].done) {
+ message(LOG_DAEMON|LOG_INFO, "Closing thread %d\n", tdata[i].core_id);
+ pthread_join(threads[i], NULL);
+ jent_entropy_collector_free(tdata[i].ec);
+- } else {
+- read(pipefds[0], tmpbuf, 1024);
++ } else
+ sched_yield();
+- }
+ }
+
+- close(pipefds[2]);
+- close(pipefds[1]);
++ close(pipefds[0]);
+ free(tdata);
+ free(threads);
+ return;