+++ /dev/null
-From 450dfb09ee72ffedea8f2a25fdce17295f01f62f Mon Sep 17 00:00:00 2001
-From: Stephan Mueller <smueller@chronox.de>
-Date: Tue, 8 Aug 2017 10:04:06 +0200
-Subject: [PATCH] Unify code to read from seed sources
-
-Remove the code duplication for FD reads and syscall reads.
-
-This patch also fixes the use of __NR_getrandom resolution.
-
-[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/450dfb09ee72ffedea8f2a25fdce17295f01f62f]
-Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
-
----
- apps/kcapi-rng.c | 71 +++++++++++++++++++++++++-------------------------------
- 1 file changed, 32 insertions(+), 39 deletions(-)
-
-diff --git a/apps/kcapi-rng.c b/apps/kcapi-rng.c
-index e15edf9..96da111 100644
---- a/apps/kcapi-rng.c
-+++ b/apps/kcapi-rng.c
-@@ -17,7 +17,9 @@
- * DAMAGE.
- */
-
-+#define _GNU_SOURCE
- #include <unistd.h>
-+#include <sys/syscall.h>
- #include <errno.h>
- #include <limits.h>
- #include <stdint.h>
-@@ -41,56 +43,48 @@
- /* Minimum seed is 256 bits. */
- #define KCAPI_RNG_MINSEEDSIZE 32
-
--struct kcapi_handle *rng = NULL;
--unsigned int Verbosity = 0;
--char *rng_name = NULL;
-+static struct kcapi_handle *rng = NULL;
-+static unsigned int Verbosity = 0;
-+static char *rng_name = NULL;
-
--#ifndef HAVE_GETRANDOM
--static int read_complete(int fd, uint8_t *buf, uint32_t buflen)
-+#if !defined(HAVE_GETRANDOM) && !defined(__NR_getrandom)
-+static int random_fd = -1;
-+static int open_random(void)
- {
-- ssize_t ret;
-+ random_fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC);
-+ if (0 > random_fd)
-+ return random_fd;
-
-- do {
-- ret = read(fd, buf, buflen);
-- if (0 < ret) {
-- buflen -= ret;
-- buf += ret;
-- }
-- } while ((0 < ret || EINTR == errno || ERESTART == errno)
-- && buflen > 0);
--
-- if (buflen == 0)
-- return 0;
-- return 1;
-+ return 0;
- }
-
--static int read_random(uint8_t *buf, uint32_t buflen)
-+static void close_random(void)
- {
-- int fd;
-- int ret = 0;
--
-- fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC);
-- if (0 > fd)
-- return fd;
--
-- ret = read_complete(fd, buf, buflen);
-- close(fd);
-- return ret;
-+ close(random_fd);
- }
- #endif
-
- static int get_random(uint8_t *buf, uint32_t buflen)
- {
-+ ssize_t ret;
-+
- if (buflen > INT_MAX)
- return 1;
-
-+#if (!defined(HAVE_GETRANDOM) && !defined(__NR_getrandom))
-+ ret = open_random();
-+ if (ret)
-+ return ret;
-+#endif
-+
-+ do {
- #ifdef HAVE_GETRANDOM
-- return getrandom(buf, buflen, 0);
-+ ret = getrandom(buf, buflen, 0);
-+#elif defined __NR_getrandom
-+ ret = syscall(__NR_getrandom, buf, buflen, 0);
- #else
--# ifdef __NR_getrandom
-- do {
-- int ret = syscall(__NR_getrandom, buf, buflen, 0);
--
-+ ret = read(random_fd, buf, buflen);
-+#endif
- if (0 < ret) {
- buflen -= ret;
- buf += ret;
-@@ -98,14 +92,13 @@ static int get_random(uint8_t *buf, uint32_t buflen)
- } while ((0 < ret || EINTR == errno || ERESTART == errno)
- && buflen > 0);
-
-+#if (!defined(HAVE_GETRANDOM) && !defined(__NR_getrandom))
-+ close_random();
-+#endif
-+
- if (buflen == 0)
- return 0;
--
- return 1;
--# else
-- return read_random(buf, buflen);
--# endif
--#endif
- }
-
- static void usage(void)
+++ /dev/null
-From 2b9e01ee31c1b7596b19f0c89954e93e217b0479 Mon Sep 17 00:00:00 2001
-From: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
-Date: Thu, 21 Sep 2017 10:16:33 +0200
-Subject: [PATCH] internal.h: make inline functions static
-
-With some GCC configurations/build options it is possible for gcc to
-ignore the inline hint. As the methods are not declared static, gcc
-expects a definition to be provided elsewhere, which is not the case
-here resulting in the following linker error:
-
-libtool: link: /home/marcin/br-test-pkg/br-arm-cortex-a9-glibc/host/bin/arm-linux-gcc
--fstack-protector-strong -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
--D_FILE_OFFSET_BITS=64 -Os -Wl,-z -Wl,relro -Wl,-z -Wl,now -o bin/kcapi
-test/bin_kcapi-kcapi-main.o ./.libs/libkcapi.so -Wl,-rpath
--Wl,/home/marcin/br-test-pkg/br-arm-cortex-a9-glibc/build/libkcapi-0.14.0/.libs
-./.libs/libkcapi.so: undefined reference to `_kcapi_common_vmsplice_iov'
-./.libs/libkcapi.so: undefined reference to `_kcapi_common_read_data'
-./.libs/libkcapi.so: undefined reference to `_kcapi_aio_read_iov'
-./.libs/libkcapi.so: undefined reference to `_kcapi_common_recv_data'
-./.libs/libkcapi.so: undefined reference to `_kcapi_common_send_data'
-./.libs/libkcapi.so: undefined reference to `_kcapi_common_vmsplice_chunk'
-./.libs/libkcapi.so: undefined reference to `_kcapi_common_send_meta'
-collect2: error: ld returned 1 exit status
-
-$ arm-linux-gcc --version
-arm-linux-gcc.br_real (Buildroot 2017.08-git-01078-g95b1dae) 7.1.0
-
-Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
-Signed-off-by: Stephan Mueller <smueller@chronox.de>
-
-[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/2b9e01ee31c1b7596b19f0c89954e93e217b0479]
-Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
----
- lib/internal.h | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/lib/internal.h b/lib/internal.h
-index 0d98f24..addf450 100644
---- a/lib/internal.h
-+++ b/lib/internal.h
-@@ -233,7 +233,7 @@ void kcapi_dolog(int severity, const char *fmt, ...);
- int32_t _kcapi_common_send_meta_fd(struct kcapi_handle *handle, int *fdptr,
- struct iovec *iov, uint32_t iovlen,
- uint32_t enc, uint32_t flags);
--inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle,
-+static inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle,
- struct iovec *iov, uint32_t iovlen,
- uint32_t enc, uint32_t flags)
- {
-@@ -244,7 +244,7 @@ inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle,
- int32_t _kcapi_common_vmsplice_iov_fd(struct kcapi_handle *handle, int *fdptr,
- struct iovec *iov, unsigned long iovlen,
- uint32_t flags);
--inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle,
-+static inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle,
- struct iovec *iov, unsigned long iovlen,
- uint32_t flags)
- {
-@@ -255,7 +255,7 @@ inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle,
- int32_t _kcapi_common_send_data_fd(struct kcapi_handle *handle, int *fdprt,
- struct iovec *iov, uint32_t iovlen,
- uint32_t flags);
--inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle,
-+static inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle,
- struct iovec *iov, uint32_t iovlen,
- uint32_t flags)
- {
-@@ -265,7 +265,7 @@ inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle,
-
- int32_t _kcapi_common_recv_data_fd(struct kcapi_handle *handle, int *fdptr,
- struct iovec *iov, uint32_t iovlen);
--inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle,
-+static inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle,
- struct iovec *iov, uint32_t iovlen)
- {
- return _kcapi_common_recv_data_fd(handle, &handle->opfd, iov, iovlen);
-@@ -273,7 +273,7 @@ inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle,
-
- int32_t _kcapi_common_read_data_fd(struct kcapi_handle *handle, int *fdptr,
- uint8_t *out, uint32_t outlen);
--inline int32_t _kcapi_common_read_data(struct kcapi_handle *handle,
-+static inline int32_t _kcapi_common_read_data(struct kcapi_handle *handle,
- uint8_t *out, uint32_t outlen)
- {
- return _kcapi_common_read_data_fd(handle, &handle->opfd, out, outlen);
-@@ -285,7 +285,7 @@ int _kcapi_common_close(struct kcapi_handle *handle, int fdptr);
- int32_t _kcapi_common_vmsplice_chunk_fd(struct kcapi_handle *handle, int *fdptr,
- const uint8_t *in, uint32_t inlen,
- uint32_t flags);
--inline int32_t _kcapi_common_vmsplice_chunk(struct kcapi_handle *handle,
-+static inline int32_t _kcapi_common_vmsplice_chunk(struct kcapi_handle *handle,
- const uint8_t *in, uint32_t inlen,
- uint32_t flags)
- {
-@@ -315,7 +315,7 @@ int _kcapi_aio_send_iov(struct kcapi_handle *handle, struct iovec *iov,
-
- int32_t _kcapi_aio_read_iov_fd(struct kcapi_handle *handle, int *fdptr,
- struct iovec *iov, uint32_t iovlen);
--inline int32_t _kcapi_aio_read_iov(struct kcapi_handle *handle,
-+static inline int32_t _kcapi_aio_read_iov(struct kcapi_handle *handle,
- struct iovec *iov, uint32_t iovlen)
- {
- return _kcapi_aio_read_iov_fd(handle, &handle->opfd, iov, iovlen);