diff options
author | Matt Turner <mattst88@gentoo.org> | 2019-10-24 14:40:06 -0700 |
---|---|---|
committer | Matt Turner <mattst88@gentoo.org> | 2019-10-24 14:41:11 -0700 |
commit | 7220652e183226ea736d7c59359e88c3c0b3f00d (patch) | |
tree | 12cf3f983f1975c9cdc1b190216c3e5e8aa24370 /sys-apps/rng-tools/files | |
parent | media-libs/libglvnd: Update homepage/git repo to freedesktop.org (diff) | |
download | gentoo-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.patch | 37 |
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; |