Hello community,
here is the log from the commit of package systemd for openSUSE:Factory checked in at 2015-04-30 11:50:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/systemd (Old)
and /work/SRC/openSUSE:Factory/.systemd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "systemd"
Changes:
--------
--- /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes 2015-04-15 16:21:26.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes 2015-04-30 11:50:13.000000000 +0200
@@ -1,0 +2,7 @@
+Mon Mar 16 15:35:31 UTC 2015 - werner@suse.de
+
+- Add upstream patch
+ 0001-core-don-t-change-removed-devices-to-state-tentative.patch
+ to fix the fix of the last backport (bsc#921898)
+
+-------------------------------------------------------------------
systemd.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ systemd-mini.spec ++++++
--- /var/tmp/diff_new_pack.QJXb8d/_old 2015-04-30 11:50:15.000000000 +0200
+++ /var/tmp/diff_new_pack.QJXb8d/_new 2015-04-30 11:50:15.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package systemd-mini
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
systemd.spec: same change
++++++ use-rndaddentropy-ioctl-to-load-random-seed.patch ++++++
--- /var/tmp/diff_new_pack.QJXb8d/_old 2015-04-30 11:50:16.000000000 +0200
+++ /var/tmp/diff_new_pack.QJXb8d/_new 2015-04-30 11:50:16.000000000 +0200
@@ -5,13 +5,11 @@
Related to bnc#892096
---
- src/random-seed/random-seed.c | 65 +++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 61 insertions(+), 4 deletions(-)
+ systemd-219/src/random-seed/random-seed.c | 71 +++++++++++++++++++++++++-----
+ 1 file changed, 61 insertions(+), 10 deletions(-)
-Index: systemd-218/src/random-seed/random-seed.c
-===================================================================
---- systemd-218.orig/src/random-seed/random-seed.c
-+++ systemd-218/src/random-seed/random-seed.c
+--- systemd-219/src/random-seed/random-seed.c
++++ systemd-219/src/random-seed/random-seed.c 2015-04-21 09:39:03.057518051 +0000
@@ -22,7 +22,9 @@
#include
#include
@@ -22,31 +20,46 @@
#include
#include "log.h"
-@@ -32,8 +34,9 @@
+@@ -32,8 +34,8 @@
#define POOL_SIZE_MIN 512
int main(int argc, char *argv[]) {
- _cleanup_close_ int seed_fd = -1, random_fd = -1;
+- _cleanup_free_ void* buf = NULL;
+ _cleanup_close_ int seed_fd = -1, random_fd = -1, entropy_fd = -1;
- _cleanup_free_ void* buf = NULL;
-+ size_t entropy_count = 0;
++ _cleanup_free_ struct rand_pool_info *entropy = NULL;
size_t buf_size = 0;
ssize_t k;
int r;
-@@ -82,6 +85,23 @@ int main(int argc, char *argv[]) {
+@@ -65,11 +67,12 @@ int main(int argc, char *argv[]) {
+ if (buf_size <= POOL_SIZE_MIN)
+ buf_size = POOL_SIZE_MIN;
+
+- buf = malloc(buf_size);
+- if (!buf) {
++ entropy = (struct rand_pool_info*) malloc(sizeof(struct rand_pool_info) + buf_size);
++ if (!entropy) {
+ r = log_oom();
+ goto finish;
+ }
++ entropy->buf_size = buf_size;
+
+ r = mkdir_parents_label(RANDOM_SEED, 0755);
+ if (r < 0) {
+@@ -83,6 +86,23 @@ int main(int argc, char *argv[]) {
if (streq(argv[1], "load")) {
+ entropy_fd = open(RANDOM_SEED_DIR "entropy_count", O_RDONLY|O_CLOEXEC|O_NOCTTY, 0600);
+ if (entropy_fd < 0) {
-+ entropy_count = 0;
++ entropy->entropy_count = 0;
+ if (errno != ENOENT) {
+ log_error("Failed to open " RANDOM_SEED "/entropy_count: %m");
+ r = -errno;
+ goto finish;
+ }
+ } else {
-+ r = read(entropy_fd, &entropy_count, sizeof(entropy_count));
++ r = read(entropy_fd, &entropy->entropy_count, sizeof(entropy->entropy_count));
+ if (r < 0) {
+ log_error("Failed to read entropy count file: %m");
+ r = -errno;
@@ -57,56 +70,60 @@
seed_fd = open(RANDOM_SEED, O_RDWR|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600);
if (seed_fd < 0) {
seed_fd = open(RANDOM_SEED, O_RDONLY|O_CLOEXEC|O_NOCTTY);
-@@ -113,12 +133,34 @@ int main(int argc, char *argv[]) {
+@@ -104,7 +124,7 @@ int main(int argc, char *argv[]) {
+ }
+ }
+
+- k = loop_read(seed_fd, buf, buf_size, false);
++ k = loop_read(seed_fd, entropy->buf, entropy->buf_size, false);
+ if (k <= 0) {
+
+ if (r != 0)
+@@ -115,13 +135,29 @@ int main(int argc, char *argv[]) {
} else {
lseek(seed_fd, 0, SEEK_SET);
- r = loop_write(random_fd, buf, (size_t) k, false);
- if (r < 0)
- log_error_errno(r, "Failed to write seed to /dev/urandom: %m");
-+ if (entropy_count && (size_t) k == buf_size) {
-+ struct rand_pool_info entropy = {
-+ .entropy_count = entropy_count,
-+ .buf_size = buf_size,
-+ };
-+ entropy.buf[0] = ((__u32*)buf)[0];
-+ r = ioctl(random_fd, RNDADDENTROPY, &entropy);
++ if (entropy->entropy_count && ((size_t)k) == entropy->buf_size) {
++ r = ioctl(random_fd, RNDADDENTROPY, entropy);
+ if (r < 0) {
-+ log_error("Failed to write seed to /dev/urandom: %m");
++ log_error_errno(errno, "Failed to write seed to /dev/urandom: %m");
+ r = -errno;
+ }
+ } else {
-+ k = loop_write(random_fd, buf, (size_t) k, false);
-+ if (k <= 0) {
-+ log_error("Failed to write seed to /dev/urandom: %s", r < 0 ? strerror(-r) : "short write");
-+ r = k == 0 ? -EIO : (int) k;
-+ }
-+ }
++ r = loop_write(random_fd, entropy->buf, (size_t) k, false);
++ if (r < 0)
++ log_error_errno(r, "Failed to write seed to /dev/urandom: %m");
++ }
}
} else if (streq(argv[1], "save")) {
+
+ /* Read available entropy count, if possible */
+ f = fopen("/proc/sys/kernel/random/entropy_avail", "re");
+ if (f) {
-+ if (fscanf(f, "%zu", &entropy_count) < 0)
-+ entropy_count = 0;
++ if (fscanf(f, "%d", &entropy->entropy_count) < 0)
++ entropy->entropy_count = 0;
+ fclose(f);
+ }
-
++
seed_fd = open(RANDOM_SEED, O_WRONLY|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600);
if (seed_fd < 0) {
-@@ -134,6 +176,21 @@ int main(int argc, char *argv[]) {
+ log_error_errno(errno, "Failed to open " RANDOM_SEED ": %m");
+@@ -136,6 +172,21 @@ int main(int argc, char *argv[]) {
goto finish;
}
-+ if (entropy_count) {
++ if (entropy->entropy_count) {
+ entropy_fd = open(RANDOM_SEED_DIR "entropy_count", O_WRONLY|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600);
+ if (seed_fd < 0) {
+ log_error("Failed to open " RANDOM_SEED_DIR "entropy_count: %m");
+ r = -errno;
+ goto finish;
+ }
-+ r = write(entropy_fd, &entropy_count, sizeof(entropy_count));
++ r = write(entropy_fd, &entropy->entropy_count, sizeof(entropy->entropy_count));
+ if (r < 0) {
+ log_error("Failed to write entropy count file: %m");
+ r = -errno;
@@ -117,3 +134,18 @@
} else {
log_error("Unknown verb %s.", argv[1]);
r = -EINVAL;
+@@ -149,12 +200,12 @@ int main(int argc, char *argv[]) {
+ fchmod(seed_fd, 0600);
+ fchown(seed_fd, 0, 0);
+
+- k = loop_read(random_fd, buf, buf_size, false);
++ k = loop_read(random_fd, entropy->buf, entropy->buf_size, false);
+ if (k <= 0) {
+ log_error("Failed to read new seed from /dev/urandom: %s", r < 0 ? strerror(-r) : "EOF");
+ r = k == 0 ? -EIO : (int) k;
+ } else {
+- r = loop_write(seed_fd, buf, (size_t) k, false);
++ r = loop_write(seed_fd, entropy->buf, (size_t) k, false);
+ if (r < 0)
+ log_error_errno(r, "Failed to write new random seed file: %m");
+ }