diff --git a/0001-cgroup-add-the-missing-setting-of-variable-s-value.patch b/0001-cgroup-add-the-missing-setting-of-variable-s-value.patch new file mode 100644 index 0000000..4883bae --- /dev/null +++ b/0001-cgroup-add-the-missing-setting-of-variable-s-value.patch @@ -0,0 +1,27 @@ +From 8d7b5ca0a6cdab3e400ef084fa8a05d581d59b55 Mon Sep 17 00:00:00 2001 +From: Gao feng +Date: Fri, 13 Sep 2013 11:17:05 +0800 +Subject: [PATCH 1/7] cgroup: add the missing setting of variable's value + +set the value of variable "r" to the return value +of cg_set_attribute. +--- + src/core/cgroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/cgroup.c b/src/core/cgroup.c +index 3eeb475..fba0b2f 100644 +--- a/src/core/cgroup.c ++++ b/src/core/cgroup.c +@@ -264,7 +264,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha + log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); + + sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); +- cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); ++ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); + if (r < 0) + log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); + } +-- +1.8.1.4 + diff --git a/0002-cgroup-correct-the-log-information.patch b/0002-cgroup-correct-the-log-information.patch new file mode 100644 index 0000000..648b5c6 --- /dev/null +++ b/0002-cgroup-correct-the-log-information.patch @@ -0,0 +1,26 @@ +From ebab7f4535a077eb8168cb8f3a9fe899e56aba17 Mon Sep 17 00:00:00 2001 +From: Gao feng +Date: Fri, 13 Sep 2013 11:17:06 +0800 +Subject: [PATCH 2/7] cgroup: correct the log information + +it should be memory.soft_limit_in_bytes. +--- + src/core/cgroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/cgroup.c b/src/core/cgroup.c +index fba0b2f..aee93ba 100644 +--- a/src/core/cgroup.c ++++ b/src/core/cgroup.c +@@ -266,7 +266,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha + sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); + r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); + if (r < 0) +- log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); ++ log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r)); + } + + if (mask & CGROUP_DEVICE) { +-- +1.8.1.4 + diff --git a/0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch b/0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch new file mode 100644 index 0000000..9b10393 --- /dev/null +++ b/0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch @@ -0,0 +1,46 @@ +From bebbf30ef61e4cbc782731e48ad67613aab38ec6 Mon Sep 17 00:00:00 2001 +From: Gao feng +Date: Fri, 13 Sep 2013 14:43:04 +0800 +Subject: [PATCH 3/7] cgroup: fix incorrectly setting memory cgroup + +If the memory_limit of unit is -1, we should write "-1" +to the file memory.limit_in_bytes. not the (unit64_t) -1. + +otherwise the memory.limit_in_bytes will be set to zero. +--- + src/core/cgroup.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +diff --git a/src/core/cgroup.c b/src/core/cgroup.c +index aee93ba..244baff 100644 +--- a/src/core/cgroup.c ++++ b/src/core/cgroup.c +@@ -257,14 +257,21 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha + + if (mask & CGROUP_MEMORY) { + char buf[DECIMAL_STR_MAX(uint64_t) + 1]; ++ if (c->memory_limit != (uint64_t) -1) { ++ sprintf(buf, "%" PRIu64 "\n", c->memory_limit); ++ r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf); ++ } else ++ r = cg_set_attribute("memory", path, "memory.limit_in_bytes", "-1"); + +- sprintf(buf, "%" PRIu64 "\n", c->memory_limit); +- r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf); + if (r < 0) + log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); + +- sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); +- r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); ++ if (c->memory_soft_limit != (uint64_t) -1) { ++ sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); ++ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); ++ } else ++ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", "-1"); ++ + if (r < 0) + log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r)); + } +-- +1.8.1.4 + diff --git a/0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch b/0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch new file mode 100644 index 0000000..b90fbad --- /dev/null +++ b/0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch @@ -0,0 +1,25 @@ +From 0465a409e0a3725b44b0801641a7497e2125e59e Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Fri, 13 Sep 2013 14:12:55 +0200 +Subject: [PATCH 4/7] random-seed: we should return errno of failed loop_write + +--- + src/random-seed/random-seed.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c +index 4776c07..afbd500 100644 +--- a/src/random-seed/random-seed.c ++++ b/src/random-seed/random-seed.c +@@ -157,7 +157,7 @@ int main(int argc, char *argv[]) { + r = loop_write(seed_fd, buf, (size_t) k, false); + if (r <= 0) { + log_error("Failed to write new random seed file: %s", r < 0 ? strerror(-r) : "short write"); +- r = k == 0 ? -EIO : (int) k; ++ r = r == 0 ? -EIO : r; + } + } + +-- +1.8.1.4 + diff --git a/0005-core-cgroup-first-print-then-free.patch b/0005-core-cgroup-first-print-then-free.patch new file mode 100644 index 0000000..5aac9a8 --- /dev/null +++ b/0005-core-cgroup-first-print-then-free.patch @@ -0,0 +1,26 @@ +From fa7341808def8efb736747299374745ae059f398 Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Fri, 13 Sep 2013 14:31:17 +0200 +Subject: [PATCH 5/7] core/cgroup: first print then free + +--- + src/core/cgroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/cgroup.c b/src/core/cgroup.c +index 244baff..1f41efc 100644 +--- a/src/core/cgroup.c ++++ b/src/core/cgroup.c +@@ -402,8 +402,8 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) { + is_in_hash = true; + + if (r < 0) { +- free(path); + log_error("cgroup %s exists already: %s", path, strerror(-r)); ++ free(path); + return r; + } + +-- +1.8.1.4 + diff --git a/0006-swap-fix-reverse-dependencies.patch b/0006-swap-fix-reverse-dependencies.patch new file mode 100644 index 0000000..4582c34 --- /dev/null +++ b/0006-swap-fix-reverse-dependencies.patch @@ -0,0 +1,30 @@ +From dec37dc9e875695c09cfc1ec5e55b5f68eaa39f4 Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Fri, 13 Sep 2013 14:46:18 +0200 +Subject: [PATCH 6/7] swap: fix reverse dependencies + +Make sure swap.target correctly requires/wants the swap units. + +This fixes https://bugs.freedesktop.org/show_bug.cgi?id=69291. + +Reported-by: Hussam Al-Tayeb +--- + src/core/swap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/swap.c b/src/core/swap.c +index 57d15eb..3950860 100644 +--- a/src/core/swap.c ++++ b/src/core/swap.c +@@ -220,7 +220,7 @@ static int swap_add_default_dependencies(Swap *s) { + } + + if (!noauto) { +- r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, (nofail ? UNIT_WANTED_BY : UNIT_REQUIRED_BY), ++ r = unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, (nofail ? UNIT_WANTS : UNIT_REQUIRES), + SPECIAL_SWAP_TARGET, NULL, true); + if (r < 0) + return r; +-- +1.8.1.4 + diff --git a/0007-libudev-fix-move_later-comparison.patch b/0007-libudev-fix-move_later-comparison.patch new file mode 100644 index 0000000..e1e4d00 --- /dev/null +++ b/0007-libudev-fix-move_later-comparison.patch @@ -0,0 +1,27 @@ +From f90d045c9168a55bb22eef6fe8756b6a6d2c1e53 Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Fri, 13 Sep 2013 14:12:54 +0200 +Subject: [PATCH 7/7] libudev: fix move_later comparison + +At the beginning move_later is set to -1, but it is set to different +value only if expression !move_later is true. +--- + src/libudev/libudev-enumerate.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c +index bc1e37d..8146f27 100644 +--- a/src/libudev/libudev-enumerate.c ++++ b/src/libudev/libudev-enumerate.c +@@ -300,7 +300,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume + /* skip to be delayed devices, and move the to + * the point where the prefix changes. We can + * only move one item at a time. */ +- if (!move_later) { ++ if (move_later == -1) { + move_later_prefix = devices_delay_later(udev_enumerate->udev, entry->syspath); + + if (move_later_prefix > 0) { +-- +1.8.1.4 + diff --git a/systemd-dbus-system-bus-address.patch b/systemd-dbus-system-bus-address.patch new file mode 100644 index 0000000..3d252dc --- /dev/null +++ b/systemd-dbus-system-bus-address.patch @@ -0,0 +1,11 @@ +--- systemd-207.orig/src/core/dbus.c ++++ systemd-207/src/core/dbus.c +@@ -50,7 +50,7 @@ + #define CONNECTIONS_MAX 512 + + /* Well-known address (http://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-types) */ +-#define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:path=/var/run/dbus/system_bus_socket" ++#define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:path=/run/dbus/system_bus_socket" + /* Only used as a fallback */ + #define DBUS_SESSION_BUS_DEFAULT_ADDRESS "autolaunch:" + diff --git a/systemd-mini.changes b/systemd-mini.changes index 181a4e9..70468f8 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,3 +1,32 @@ +------------------------------------------------------------------- +Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org + +- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch + missing important check on return value. +- 0002-cgroup-correct-the-log-information.patch fix misleading + log information. +- 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch fix + setting memory cgroup +- 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch + should fail if write fails. +- 0005-core-cgroup-first-print-then-free.patch use-after-free + will trigger if there is an error condition. +- 0006-swap-fix-reverse-dependencies.patch reported in + opensuse-factory list, topic "swap isn't activated" +- 0007-libudev-fix-move_later-comparison.patch libudev + invalid usage of "move_later". + +------------------------------------------------------------------- +Sat Sep 14 06:52:32 UTC 2013 - crrodriguez@opensuse.org + +- while testing this new release I get in the logs ocassionally + at boot "systemd[1]: Failed to open private bus connection: + Failed to connect to socket /var/run/dbus/system_bus_socket: + No such file or directory" indeed DBUS_SYSTEM_BUS_DEFAULT_ADDRESS + is defined to /var/run/dbus/system_bus_socket instead of + /run/dbus/system_bus_socket and that does not fly when /var/run + is not yet available. (systemd-dbus-system-bus-address.patch) + ------------------------------------------------------------------- Fri Sep 13 07:47:40 UTC 2013 - fcrozat@suse.com diff --git a/systemd-mini.spec b/systemd-mini.spec index 23683aa..eb7c804 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -170,6 +170,21 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch # PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin Patch46: use-usr-sbin-sulogin-for-emergency-service.patch +# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run +Patch47: systemd-dbus-system-bus-address.patch + +# PATCH-FIX-UPSTREAM 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch -- r must be set to the return value of previous call. +Patch48: 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch +# PATCH-FIX-UPSTREAM 0002-cgroup-correct-the-log-information.patch -- fix misleading log information. +Patch49: 0002-cgroup-correct-the-log-information.patch +# PATCH-FIX-UPSTREAM 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch -- memory cgroup setting is wrong. +Patch50: 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch +# PATCH-FIX-UPSTREAM 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch -- systemd-random-seed-load should fail if write fails. +Patch51: 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch +# PATCH-FIX-UPSTREAM 0005-core-cgroup-first-print-then-free.patch -- fix use after free +Patch52: 0005-core-cgroup-first-print-then-free.patch +# PATCH-FIX-UPSTREAM 0006-swap-fix-reverse-dependencies.patch -- SWAP does not mount properly +Patch53: 0006-swap-fix-reverse-dependencies.patch # udev patches # PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch @@ -186,6 +201,8 @@ Patch1006: 1006-udev-always-rename-network.patch Patch1007: 1007-physical-hotplug-cpu-and-memory.patch # PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch Patch1008: 1008-add-msft-compability-rules.patch +# PATCH-FIX-UPSTREAM libudev: fix move_later comparison +Patch1009: 0007-libudev-fix-move_later-comparison.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -414,6 +431,13 @@ cp %{SOURCE7} m4/ %patch41 -p1 %patch42 -p1 %patch46 -p1 +%patch47 -p1 +%patch48 -p1 +%patch49 -p1 +%patch50 -p1 +%patch51 -p1 +%patch52 -p1 +%patch53 -p1 # udev patches %patch1001 -p1 @@ -426,6 +450,7 @@ cp %{SOURCE7} m4/ %patch1007 -p1 %patch1008 -p1 %endif +%patch1009 -p1 %build autoreconf -fiv diff --git a/systemd.changes b/systemd.changes index 181a4e9..70468f8 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,32 @@ +------------------------------------------------------------------- +Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org + +- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch + missing important check on return value. +- 0002-cgroup-correct-the-log-information.patch fix misleading + log information. +- 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch fix + setting memory cgroup +- 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch + should fail if write fails. +- 0005-core-cgroup-first-print-then-free.patch use-after-free + will trigger if there is an error condition. +- 0006-swap-fix-reverse-dependencies.patch reported in + opensuse-factory list, topic "swap isn't activated" +- 0007-libudev-fix-move_later-comparison.patch libudev + invalid usage of "move_later". + +------------------------------------------------------------------- +Sat Sep 14 06:52:32 UTC 2013 - crrodriguez@opensuse.org + +- while testing this new release I get in the logs ocassionally + at boot "systemd[1]: Failed to open private bus connection: + Failed to connect to socket /var/run/dbus/system_bus_socket: + No such file or directory" indeed DBUS_SYSTEM_BUS_DEFAULT_ADDRESS + is defined to /var/run/dbus/system_bus_socket instead of + /run/dbus/system_bus_socket and that does not fly when /var/run + is not yet available. (systemd-dbus-system-bus-address.patch) + ------------------------------------------------------------------- Fri Sep 13 07:47:40 UTC 2013 - fcrozat@suse.com diff --git a/systemd.spec b/systemd.spec index 16f4694..e34e62f 100644 --- a/systemd.spec +++ b/systemd.spec @@ -165,6 +165,21 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch # PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin Patch46: use-usr-sbin-sulogin-for-emergency-service.patch +# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run +Patch47: systemd-dbus-system-bus-address.patch + +# PATCH-FIX-UPSTREAM 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch -- r must be set to the return value of previous call. +Patch48: 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch +# PATCH-FIX-UPSTREAM 0002-cgroup-correct-the-log-information.patch -- fix misleading log information. +Patch49: 0002-cgroup-correct-the-log-information.patch +# PATCH-FIX-UPSTREAM 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch -- memory cgroup setting is wrong. +Patch50: 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch +# PATCH-FIX-UPSTREAM 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch -- systemd-random-seed-load should fail if write fails. +Patch51: 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch +# PATCH-FIX-UPSTREAM 0005-core-cgroup-first-print-then-free.patch -- fix use after free +Patch52: 0005-core-cgroup-first-print-then-free.patch +# PATCH-FIX-UPSTREAM 0006-swap-fix-reverse-dependencies.patch -- SWAP does not mount properly +Patch53: 0006-swap-fix-reverse-dependencies.patch # udev patches # PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch @@ -181,6 +196,8 @@ Patch1006: 1006-udev-always-rename-network.patch Patch1007: 1007-physical-hotplug-cpu-and-memory.patch # PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch Patch1008: 1008-add-msft-compability-rules.patch +# PATCH-FIX-UPSTREAM libudev: fix move_later comparison +Patch1009: 0007-libudev-fix-move_later-comparison.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -409,6 +426,13 @@ cp %{SOURCE7} m4/ %patch41 -p1 %patch42 -p1 %patch46 -p1 +%patch47 -p1 +%patch48 -p1 +%patch49 -p1 +%patch50 -p1 +%patch51 -p1 +%patch52 -p1 +%patch53 -p1 # udev patches %patch1001 -p1 @@ -421,6 +445,7 @@ cp %{SOURCE7} m4/ %patch1007 -p1 %patch1008 -p1 %endif +%patch1009 -p1 %build autoreconf -fiv