From 101e7ed23260d3335582a27de65fd8bdbe98e86a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Oct 02 2013 12:23:52 +0000 Subject: new upstream release --- diff --git a/0003-core-cgroup-first-print-then-free.patch b/0003-core-cgroup-first-print-then-free.patch deleted file mode 100644 index dc4eecf..0000000 --- a/0003-core-cgroup-first-print-then-free.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 89ad78921a404dc82f22862f2354707199ea1616 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Fri, 13 Sep 2013 14:31:17 +0200 -Subject: [PATCH] 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 3eeb475..513450a 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -395,8 +395,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; - } - diff --git a/0004-swap-fix-reverse-dependencies.patch b/0004-swap-fix-reverse-dependencies.patch deleted file mode 100644 index 63674d1..0000000 --- a/0004-swap-fix-reverse-dependencies.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0f84fab56d31f53b2970bdee64e254c4518618a7 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Fri, 13 Sep 2013 14:46:18 +0200 -Subject: [PATCH] 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; diff --git a/0005-update-TODO.patch b/0005-update-TODO.patch deleted file mode 100644 index 911db49..0000000 --- a/0005-update-TODO.patch +++ /dev/null @@ -1,22 +0,0 @@ -From d0746c1d17407a17c18f26876d9ca0f6f20b29b0 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 13 Sep 2013 04:13:47 +0200 -Subject: [PATCH] update TODO - ---- - TODO | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/TODO b/TODO -index 08d4914..5354692 100644 ---- a/TODO -+++ b/TODO -@@ -58,6 +58,8 @@ CGroup Rework Completion: - - Features: - -+* Move backlight and random-seed into /var/lib/systemd -+ - * When a Type=forking service fails and needed another service that - service is not cleaned up again when it has StopWhenUnneeded=yes - http://lists.freedesktop.org/archives/systemd-devel/2013-July/012141.html diff --git a/0006-cryptsetup-generator-don-t-create-tmp-swap-units.patch b/0006-cryptsetup-generator-don-t-create-tmp-swap-units.patch deleted file mode 100644 index 2d242c5..0000000 --- a/0006-cryptsetup-generator-don-t-create-tmp-swap-units.patch +++ /dev/null @@ -1,50 +0,0 @@ -From d12ed80037b482f7da136abbd7abce9c9219ef8e Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Thu, 15 Aug 2013 08:47:59 +0800 -Subject: [PATCH] cryptsetup-generator: don't create tmp+swap units - ---- - src/cryptsetup/cryptsetup-generator.c | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c -index 81b7708..967c5e6 100644 ---- a/src/cryptsetup/cryptsetup-generator.c -+++ b/src/cryptsetup/cryptsetup-generator.c -@@ -72,13 +72,20 @@ static int create_disk( - - _cleanup_free_ char *p = NULL, *n = NULL, *d = NULL, *u = NULL, *from = NULL, *to = NULL, *e = NULL; - _cleanup_fclose_ FILE *f = NULL; -- bool noauto, nofail; -+ bool noauto, nofail, tmp, swap; - - assert(name); - assert(device); - - noauto = has_option(options, "noauto"); - nofail = has_option(options, "nofail"); -+ tmp = has_option(options, "tmp"); -+ swap = has_option(options, "swap"); -+ -+ if (tmp && swap) { -+ log_error("Device '%s' cannot be both 'tmp' and 'swap'. Ignoring.", name); -+ return -EINVAL; -+ } - - n = unit_name_from_path_instance("systemd-cryptsetup", name, ".service"); - if (!n) -@@ -151,12 +158,12 @@ static int create_disk( - name, u, strempty(password), strempty(options), - name); - -- if (has_option(options, "tmp")) -+ if (tmp) - fprintf(f, - "ExecStartPost=/sbin/mke2fs '/dev/mapper/%s'\n", - name); - -- if (has_option(options, "swap")) -+ if (swap) - fprintf(f, - "ExecStartPost=/sbin/mkswap '/dev/mapper/%s'\n", - name); diff --git a/0007-cryptsetup-generator-allow-specifying-options-in-pro.patch b/0007-cryptsetup-generator-allow-specifying-options-in-pro.patch deleted file mode 100644 index 98f140e..0000000 --- a/0007-cryptsetup-generator-allow-specifying-options-in-pro.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 61ca2800f3a1666478bdc01fc796d36c917a5032 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Sun, 18 Aug 2013 14:59:00 +0800 -Subject: [PATCH] cryptsetup-generator: allow specifying options in - /proc/cmdline -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The main usecase for this is to make it possible to use cryptsetup in -the initrd without it having to include a host-specific /etc/crypttab. - -Tested-by: Thomas Bächler ---- - man/systemd-cryptsetup-generator.xml | 23 ++++++++++ - src/cryptsetup/cryptsetup-generator.c | 79 +++++++++++++++++++++++++++++++++-- - 2 files changed, 98 insertions(+), 4 deletions(-) - -diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml -index 215ac2d..d6b7e49 100644 ---- a/man/systemd-cryptsetup-generator.xml -+++ b/man/systemd-cryptsetup-generator.xml -@@ -137,6 +137,29 @@ - will be activated in the initrd or the real root. - - -+ -+ -+ luks.options= -+ rd.luks.options= -+ -+ Takes a LUKS super -+ block UUID followed by an '=' and a string -+ of options separated by commas as argument. -+ This will override the options for the given -+ UUID. -+ If only a list of options, without an -+ UUID, is specified, they apply to any UUIDs not -+ specified elsewhere, and without an entry in -+ /etc/crypttab. -+ rd.luks.options= -+ is honored only by initial RAM disk -+ (initrd) while -+ luks.options= is -+ honored by both the main system and -+ the initrd. -+ -+ -+ - - luks.key= - rd.luks.key= -diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c -index 967c5e6..ba6efa6 100644 ---- a/src/cryptsetup/cryptsetup-generator.c -+++ b/src/cryptsetup/cryptsetup-generator.c -@@ -240,7 +240,7 @@ static int create_disk( - return 0; - } - --static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cmdline_keyfile) { -+static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char ***arg_proc_cmdline_options, char **arg_proc_cmdline_keyfile) { - _cleanup_free_ char *line = NULL; - char *w = NULL, *state = NULL; - int r; -@@ -307,7 +307,20 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cm - return log_oom(); - } - -+ } else if (startswith(word, "luks.options=")) { -+ if (strv_extend(arg_proc_cmdline_options, word + 13) < 0) -+ return log_oom(); -+ -+ } else if (startswith(word, "rd.luks.options=")) { -+ -+ if (in_initrd()) { -+ if (strv_extend(arg_proc_cmdline_options, word + 16) < 0) -+ return log_oom(); -+ } -+ - } else if (startswith(word, "luks.key=")) { -+ if (*arg_proc_cmdline_keyfile) -+ free(*arg_proc_cmdline_keyfile); - *arg_proc_cmdline_keyfile = strdup(word + 9); - if (!*arg_proc_cmdline_keyfile) - return log_oom(); -@@ -337,6 +350,7 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cm - int main(int argc, char *argv[]) { - _cleanup_strv_free_ char **arg_proc_cmdline_disks_done = NULL; - _cleanup_strv_free_ char **arg_proc_cmdline_disks = NULL; -+ _cleanup_strv_free_ char **arg_proc_cmdline_options = NULL; - _cleanup_free_ char *arg_proc_cmdline_keyfile = NULL; - _cleanup_fclose_ FILE *f = NULL; - unsigned n = 0; -@@ -357,7 +371,7 @@ int main(int argc, char *argv[]) { - - umask(0022); - -- if (parse_proc_cmdline(&arg_proc_cmdline_disks, &arg_proc_cmdline_keyfile) < 0) -+ if (parse_proc_cmdline(&arg_proc_cmdline_disks, &arg_proc_cmdline_options, &arg_proc_cmdline_keyfile) < 0) - return EXIT_FAILURE; - - if (!arg_enabled) -@@ -412,6 +426,26 @@ int main(int argc, char *argv[]) { - continue; - } - -+ if (arg_proc_cmdline_options) { -+ /* -+ If options are specified on the kernel commandline, let them override -+ the ones from crypttab. -+ */ -+ STRV_FOREACH(i, arg_proc_cmdline_options) { -+ _cleanup_free_ char *proc_uuid = NULL, *proc_options = NULL; -+ const char *p = *i; -+ -+ k = sscanf(p, "%m[0-9a-fA-F-]=%ms", &proc_uuid, &proc_options); -+ if (k == 2 && streq(proc_uuid, device + 5)) { -+ if (options) -+ free(options); -+ options = strdup(p); -+ if (!proc_options) -+ return log_oom(); -+ } -+ } -+ } -+ - if (arg_proc_cmdline_disks) { - /* - If luks UUIDs are specified on the kernel command line, use them as a filter -@@ -452,7 +486,7 @@ next: - on the kernel command line and not yet written. - */ - -- _cleanup_free_ char *name = NULL, *device = NULL; -+ _cleanup_free_ char *name = NULL, *device = NULL, *options = NULL; - const char *p = *i; - - if (startswith(p, "luks-")) -@@ -467,7 +501,44 @@ next: - if (!name || !device) - return log_oom(); - -- if (create_disk(name, device, arg_proc_cmdline_keyfile, "timeout=0") < 0) -+ if (arg_proc_cmdline_options) { -+ /* -+ If options are specified on the kernel commandline, use them. -+ */ -+ char **j; -+ -+ STRV_FOREACH(j, arg_proc_cmdline_options) { -+ _cleanup_free_ char *proc_uuid = NULL, *proc_options = NULL; -+ const char *s = *j; -+ int k; -+ -+ k = sscanf(s, "%m[0-9a-fA-F-]=%ms", &proc_uuid, &proc_options); -+ if (k == 2) { -+ if (streq(proc_uuid, device + 5)) { -+ if (options) -+ free(options); -+ options = strdup(proc_options); -+ if (!options) -+ return log_oom(); -+ } -+ } else if (!options) { -+ /* -+ Fall back to options without a specified UUID -+ */ -+ options = strdup(s); -+ if (!options) -+ return log_oom(); -+ } -+ } -+ } -+ -+ if (!options) { -+ options = strdup("timeout=0"); -+ if (!options) -+ return log_oom(); -+ } -+ -+ if (create_disk(name, device, arg_proc_cmdline_keyfile, options) < 0) - r = EXIT_FAILURE; - } - diff --git a/0008-automount-rename-repeat_unmont-to-repeat_unmount.patch b/0008-automount-rename-repeat_unmont-to-repeat_unmount.patch deleted file mode 100644 index 7541077..0000000 --- a/0008-automount-rename-repeat_unmont-to-repeat_unmount.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 091169fa11a366ab42fb6f71c22e8ed95868f804 Mon Sep 17 00:00:00 2001 -From: David Mackey -Date: Thu, 12 Sep 2013 19:45:49 -0700 -Subject: [PATCH] automount: rename repeat_unmont to repeat_unmount - -Trivial cleanup of repeat_unmount() spelling. ---- - src/core/automount.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/core/automount.c b/src/core/automount.c -index a20d534..6762392 100644 ---- a/src/core/automount.c -+++ b/src/core/automount.c -@@ -66,7 +66,7 @@ static void automount_init(Unit *u) { - UNIT(a)->ignore_on_isolate = true; - } - --static void repeat_unmout(const char *path) { -+static void repeat_unmount(const char *path) { - assert(path); - - for (;;) { -@@ -100,7 +100,7 @@ static void unmount_autofs(Automount *a) { - if (a->where && - (UNIT(a)->manager->exit_code != MANAGER_RELOAD && - UNIT(a)->manager->exit_code != MANAGER_REEXECUTE)) -- repeat_unmout(a->where); -+ repeat_unmount(a->where); - } - - static void automount_done(Unit *u) { -@@ -575,7 +575,7 @@ fail: - close_nointr_nofail(ioctl_fd); - - if (mounted) -- repeat_unmout(a->where); -+ repeat_unmount(a->where); - - log_error_unit(UNIT(a)->id, - "Failed to initialize automounter: %s", strerror(-r)); diff --git a/0009-cgroup-add-the-missing-setting-of-variable-s-value.patch b/0009-cgroup-add-the-missing-setting-of-variable-s-value.patch deleted file mode 100644 index 2b0aafe..0000000 --- a/0009-cgroup-add-the-missing-setting-of-variable-s-value.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 8799f0a37ef24fe2709b6e7fdb4ca2c1c9586718 Mon Sep 17 00:00:00 2001 -From: Gao feng -Date: Fri, 13 Sep 2013 11:17:05 +0800 -Subject: [PATCH] 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 513450a..9804227 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)); - } diff --git a/0010-cgroup-correct-the-log-information.patch b/0010-cgroup-correct-the-log-information.patch deleted file mode 100644 index 2b7839b..0000000 --- a/0010-cgroup-correct-the-log-information.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 9b69c0d07b0db38c181e35e52bcea0eb0dd21818 Mon Sep 17 00:00:00 2001 -From: Gao feng -Date: Fri, 13 Sep 2013 11:17:06 +0800 -Subject: [PATCH] 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 9804227..08cb64b 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) { diff --git a/0011-cgroup-fix-incorrectly-setting-memory-cgroup.patch b/0011-cgroup-fix-incorrectly-setting-memory-cgroup.patch deleted file mode 100644 index 3f8b175..0000000 --- a/0011-cgroup-fix-incorrectly-setting-memory-cgroup.patch +++ /dev/null @@ -1,43 +0,0 @@ -From c7e5130d5b3983986bfe95918c75e083fa90dd47 Mon Sep 17 00:00:00 2001 -From: Gao feng -Date: Fri, 13 Sep 2013 14:43:04 +0800 -Subject: [PATCH] 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 08cb64b..1f41efc 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)); - } diff --git a/0012-random-seed-we-should-return-errno-of-failed-loop_wr.patch b/0012-random-seed-we-should-return-errno-of-failed-loop_wr.patch deleted file mode 100644 index 31317ef..0000000 --- a/0012-random-seed-we-should-return-errno-of-failed-loop_wr.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 198884f22dc432a98e3d4423434b9e97d67f2da8 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Fri, 13 Sep 2013 14:12:55 +0200 -Subject: [PATCH] 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; - } - } - diff --git a/0013-update-TODO.patch b/0013-update-TODO.patch deleted file mode 100644 index 53c15ec..0000000 --- a/0013-update-TODO.patch +++ /dev/null @@ -1,24 +0,0 @@ -From f11f72532fd9a05149714229cb7559b8e3fa802a Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 13 Sep 2013 14:28:17 +0200 -Subject: [PATCH] update TODO - ---- - TODO | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/TODO b/TODO -index 5354692..9943b3e 100644 ---- a/TODO -+++ b/TODO -@@ -60,6 +60,10 @@ Features: - - * Move backlight and random-seed into /var/lib/systemd - -+* If we try to find a unit via a danglign symlink generate a clean -+ error. Currently we just ignore it and read the unit from the search -+ path anyway. -+ - * When a Type=forking service fails and needed another service that - service is not cleaned up again when it has StopWhenUnneeded=yes - http://lists.freedesktop.org/archives/systemd-devel/2013-July/012141.html diff --git a/0014-libudev-fix-move_later-comparison.patch b/0014-libudev-fix-move_later-comparison.patch deleted file mode 100644 index 4301b0c..0000000 --- a/0014-libudev-fix-move_later-comparison.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 3b93bf5a35b0bb7111754fbae75e7654b775506d Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Fri, 13 Sep 2013 14:12:54 +0200 -Subject: [PATCH] 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) { diff --git a/0015-man-document-luks.options-kernel-commandline.patch b/0015-man-document-luks.options-kernel-commandline.patch deleted file mode 100644 index 542a589..0000000 --- a/0015-man-document-luks.options-kernel-commandline.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 583f4eb5d443bc09502d6973f08755173db43fd8 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Fri, 13 Sep 2013 21:03:55 +0200 -Subject: [PATCH] man: document luks.options kernel commandline - -This should have been part of commit 7ab064a6d ---- - man/kernel-command-line.xml | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml -index a4b7d13..cc267a3 100644 ---- a/man/kernel-command-line.xml -+++ b/man/kernel-command-line.xml -@@ -250,6 +250,8 @@ - rd.luks.crypttab= - luks.uuid= - rd.luks.uuid= -+ luks.options= -+ rd.luks.options= - luks.key= - rd.luks.key= - diff --git a/0016-keymap-remove-some-commented-out-lines.patch b/0016-keymap-remove-some-commented-out-lines.patch deleted file mode 100644 index 0a5896d..0000000 --- a/0016-keymap-remove-some-commented-out-lines.patch +++ /dev/null @@ -1,33 +0,0 @@ -From f559cb147ae336f62a9020fa909b70ea90e43886 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 28 Aug 2013 17:23:59 -0400 -Subject: [PATCH] keymap: remove some commented out lines - ---- - hwdb/60-keyboard.hwdb | 6 ------ - 1 file changed, 6 deletions(-) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index eca3f55..53e83ad 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -894,11 +894,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*200E[45]*:pvr* - # Series 5 - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* - KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings --#KEYBOARD_KEY_89=!brightnessdown # Fn+F2 --#KEYBOARD_KEY_88=!brightnessup # Fn+F3 --#KEYBOARD_KEY_82=!switchvideomode # Fn+F4 video output --#KEYBOARD_KEY_f9=!f23 # Fn+F5 touchpad turn OFF --#KEYBOARD_KEY_f7=!f22 # Fn+F5 touchpad turn ON - KEYBOARD_KEY_a0=!mute # Fn+F6 mute - KEYBOARD_KEY_ae=!volumedown # Fn+F7 - KEYBOARD_KEY_b0=!volumeup # Fn+F8 -@@ -906,7 +901,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* - KEYBOARD_KEY_96=!kbdillumup # Fn+F10 keyboard backlight up - KEYBOARD_KEY_b3=!prog3 # Fn+F11 fan/cooling mode changer - KEYBOARD_KEY_d5=!wlan # Fn+F12 wlan/airplane switch --# KEYBOARD_KEY_ba=!ejectcd # Fn+DEL eject cd - - # Series 9 - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr* diff --git a/0017-Advertise-hibernation-only-if-there-s-enough-free-sw.patch b/0017-Advertise-hibernation-only-if-there-s-enough-free-sw.patch deleted file mode 100644 index 3ce4abf..0000000 --- a/0017-Advertise-hibernation-only-if-there-s-enough-free-sw.patch +++ /dev/null @@ -1,259 +0,0 @@ -From 3559039a97e1d3e28dd9b38202d3499652a58036 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 13 Sep 2013 19:41:52 -0400 -Subject: [PATCH] Advertise hibernation only if there's enough free swap - -Condition that is checked is taken from upower: - active(anon) < free swap * 0.98 - -This is really stupid, because the kernel knows the situation better, -e.g. there could be two swap files, and then hibernation would be -impossible despite passing this check, or the kernel could start -supporting compressed swap and/or compressed hibernation images, and -then this this check would be too stringent. Nevertheless, until -we have something better, this should at least return a true negative -if there's no swap. - -Logging of capabilities in the journal is changed to not strip leading -zeros. I consider this more readable anyway. - -http://cgit.freedesktop.org/upower/tree/src/up-daemon.c#n613 -https://bugzilla.redhat.com/show_bug.cgi?id=1007059 ---- - src/shared/fileio.c | 34 ++++++++++++++++++++++++++++++++++ - src/shared/fileio.h | 2 ++ - src/shared/logs-show.c | 2 +- - src/shared/sleep-config.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- - src/shared/util.c | 23 +---------------------- - src/test/test-fileio.c | 20 ++++++++++++++++++++ - src/test/test-sleep.c | 16 ++++++++-------- - 7 files changed, 110 insertions(+), 32 deletions(-) - -diff --git a/src/shared/fileio.c b/src/shared/fileio.c -index 77fd059..4e2b444 100644 ---- a/src/shared/fileio.c -+++ b/src/shared/fileio.c -@@ -648,3 +648,37 @@ int executable_is_script(const char *path, char **interpreter) { - *interpreter = ans; - return 1; - } -+ -+/** -+ * Retrieve one field from a file like /proc/self/status. -+ * pattern should start with '\n' and end with ':'. Whitespace -+ * after ':' will be skipped. field must be freed afterwards. -+ */ -+int get_status_field(const char *filename, const char *pattern, char **field) { -+ _cleanup_free_ char *status = NULL; -+ char *t; -+ size_t len; -+ int r; -+ -+ assert(filename); -+ assert(field); -+ -+ r = read_full_file(filename, &status, NULL); -+ if (r < 0) -+ return r; -+ -+ t = strstr(status, pattern); -+ if (!t) -+ return -ENOENT; -+ -+ t += strlen(pattern); -+ t += strspn(t, WHITESPACE); -+ -+ len = strcspn(t, WHITESPACE); -+ -+ *field = strndup(t, len); -+ if (!*field) -+ return -ENOMEM; -+ -+ return 0; -+} -diff --git a/src/shared/fileio.h b/src/shared/fileio.h -index a0aae28..59e4150 100644 ---- a/src/shared/fileio.h -+++ b/src/shared/fileio.h -@@ -37,3 +37,5 @@ int load_env_file(const char *fname, const char *separator, char ***l); - int write_env_file(const char *fname, char **l); - - int executable_is_script(const char *path, char **interpreter); -+ -+int get_status_field(const char *filename, const char *pattern, char **field); -diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c -index 87633e7..f50777c 100644 ---- a/src/shared/logs-show.c -+++ b/src/shared/logs-show.c -@@ -201,7 +201,7 @@ static int output_short( - assert(j); - - /* Set the threshold to one bigger than the actual print -- * treshold, so that if the line is actually longer than what -+ * threshold, so that if the line is actually longer than what - * we're willing to print, ellipsization will occur. This way - * we won't output a misleading line without any indication of - * truncation. -diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c -index cd3238b..5ec7cce 100644 ---- a/src/shared/sleep-config.c -+++ b/src/shared/sleep-config.c -@@ -163,6 +163,46 @@ int can_sleep_disk(char **types) { - return false; - } - -+#define HIBERNATION_SWAP_THRESHOLD 0.98 -+ -+static bool enough_memory_for_hibernation(void) { -+ _cleanup_free_ char *active = NULL, *swapfree = NULL; -+ unsigned long long act, swap; -+ int r; -+ -+ r = get_status_field("/proc/meminfo", "\nSwapFree:", &swapfree); -+ if (r < 0) { -+ log_error("Failed to retrieve SwapFree from /proc/meminfo: %s", strerror(-r)); -+ return false; -+ } -+ -+ r = safe_atollu(swapfree, &swap); -+ if (r < 0) { -+ log_error("Failed to parse SwapFree from /proc/meminfo: %s: %s", -+ swapfree, strerror(-r)); -+ return false; -+ } -+ -+ r = get_status_field("/proc/meminfo", "\nActive(anon):", &active); -+ if (r < 0) { -+ log_error("Failed to retrieve Active(anon) from /proc/meminfo: %s", strerror(-r)); -+ return false; -+ } -+ -+ r = safe_atollu(active, &act); -+ if (r < 0) { -+ log_error("Failed to parse Active(anon) from /proc/meminfo: %s: %s", -+ active, strerror(-r)); -+ return false; -+ } -+ -+ r = act <= swap * HIBERNATION_SWAP_THRESHOLD; -+ log_debug("Hibernation is %spossible, Active(anon)=%llu kB, SwapFree=%llu kB, threshold=%.2g%%", -+ r ? "" : "im", act, swap, 100*HIBERNATION_SWAP_THRESHOLD); -+ -+ return r; -+} -+ - int can_sleep(const char *verb) { - _cleanup_strv_free_ char **modes = NULL, **states = NULL; - int r; -@@ -175,5 +215,8 @@ int can_sleep(const char *verb) { - if (r < 0) - return false; - -- return can_sleep_state(states) && can_sleep_disk(modes); -+ if (!can_sleep_state(states) || !can_sleep_disk(modes)) -+ return false; -+ -+ return streq(verb, "suspend") || enough_memory_for_hibernation(); - } -diff --git a/src/shared/util.c b/src/shared/util.c -index 9a075fa..f6f3b18 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -694,9 +694,6 @@ int is_kernel_thread(pid_t pid) { - - int get_process_capeff(pid_t pid, char **capeff) { - const char *p; -- _cleanup_free_ char *status = NULL; -- char *t = NULL; -- int r; - - assert(capeff); - assert(pid >= 0); -@@ -706,25 +703,7 @@ int get_process_capeff(pid_t pid, char **capeff) { - else - p = procfs_file_alloca(pid, "status"); - -- r = read_full_file(p, &status, NULL); -- if (r < 0) -- return r; -- -- t = strstr(status, "\nCapEff:\t"); -- if (!t) -- return -ENOENT; -- -- for (t += strlen("\nCapEff:\t"); t[0] == '0'; t++) -- continue; -- -- if (t[0] == '\n') -- t--; -- -- *capeff = strndup(t, strchr(t, '\n') - t); -- if (!*capeff) -- return -ENOMEM; -- -- return 0; -+ return get_status_field(p, "\nCapEff:", capeff); - } - - int get_process_exe(pid_t pid, char **name) { -diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c -index 1184e7e..4a4ed79 100644 ---- a/src/test/test-fileio.c -+++ b/src/test/test-fileio.c -@@ -229,9 +229,29 @@ static void test_executable_is_script(void) { - unlink(t); - } - -+static void test_status_field(void) { -+ _cleanup_free_ char *t = NULL, *p = NULL, *s = NULL; -+ unsigned long long total, buffers; -+ -+ assert_se(get_status_field("/proc/self/status", "\nThreads:", &t) == 0); -+ puts(t); -+ assert_se(streq(t, "1")); -+ -+ assert_se(get_status_field("/proc/meminfo", "MemTotal:", &p) == 0); -+ puts(p); -+ assert_se(safe_atollu(p, &total) == 0); -+ -+ assert_se(get_status_field("/proc/meminfo", "\nBuffers:", &s) == 0); -+ puts(s); -+ assert_se(safe_atollu(s, &buffers) == 0); -+ -+ assert(buffers < total); -+} -+ - int main(int argc, char *argv[]) { - test_parse_env_file(); - test_parse_multiline_env_file(); - test_executable_is_script(); -+ test_status_field(); - return 0; - } -diff --git a/src/test/test-sleep.c b/src/test/test-sleep.c -index c3cb9c5..545dfab 100644 ---- a/src/test/test-sleep.c -+++ b/src/test/test-sleep.c -@@ -40,14 +40,14 @@ int main(int argc, char* argv[]) { - **shutdown = strv_new("shutdown", NULL), - **freez = strv_new("freeze", NULL); - -- log_info("Can Standby: %s", yes_no(can_sleep_state(standby) > 0)); -- log_info("Can Suspend: %s", yes_no(can_sleep_state(mem) > 0)); -- log_info("Can Hibernate: %s", yes_no(can_sleep_state(disk) > 0)); -- log_info("Can Hibernate+Suspend (Hybrid-Sleep): %s", yes_no(can_sleep_disk(suspend) > 0)); -- log_info("Can Hibernate+Reboot: %s", yes_no(can_sleep_disk(reboot) > 0)); -- log_info("Can Hibernate+Platform: %s", yes_no(can_sleep_disk(platform) > 0)); -- log_info("Can Hibernate+Shutdown: %s", yes_no(can_sleep_disk(shutdown) > 0)); -- log_info("Can Freeze: %s", yes_no(can_sleep_disk(freez) > 0)); -+ log_info("Standby configured: %s", yes_no(can_sleep_state(standby) > 0)); -+ log_info("Suspend configured: %s", yes_no(can_sleep_state(mem) > 0)); -+ log_info("Hibernate configured: %s", yes_no(can_sleep_state(disk) > 0)); -+ log_info("Hibernate+Suspend (Hybrid-Sleep) configured: %s", yes_no(can_sleep_disk(suspend) > 0)); -+ log_info("Hibernate+Reboot configured: %s", yes_no(can_sleep_disk(reboot) > 0)); -+ log_info("Hibernate+Platform configured: %s", yes_no(can_sleep_disk(platform) > 0)); -+ log_info("Hibernate+Shutdown configured: %s", yes_no(can_sleep_disk(shutdown) > 0)); -+ log_info("Freeze configured: %s", yes_no(can_sleep_state(freez) > 0)); - - log_info("Suspend configured and possible: %s", yes_no(can_sleep("suspend") > 0)); - log_info("Hibernation configured and possible: %s", yes_no(can_sleep("hibernate") > 0)); diff --git a/0018-README-add-SCSI-BSG-option.patch b/0018-README-add-SCSI-BSG-option.patch deleted file mode 100644 index 0653ac8..0000000 --- a/0018-README-add-SCSI-BSG-option.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 64a94f1e45890eaeb5880dbd2044265e17023067 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Sun, 15 Sep 2013 07:29:25 +0200 -Subject: [PATCH] README: add SCSI BSG option - ---- - README | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/README b/README -index a16f342..b39cd37 100644 ---- a/README -+++ b/README -@@ -64,6 +64,10 @@ REQUIREMENTS: - Mount and bind mount handling might require it: - CONFIG_FHANDLE - -+ Support for some SCSI devices serial number retrieval, to -+ create additional symlinks in /dev/disk/ and /dev/tape: -+ CONFIG_BLK_DEV_BSG -+ - Optional but strongly recommended: - CONFIG_IPV6 - CONFIG_AUTOFS4_FS diff --git a/0019-swap-create-.wants-symlink-to-auto-swap-devices.patch b/0019-swap-create-.wants-symlink-to-auto-swap-devices.patch deleted file mode 100644 index 0c3dd14..0000000 --- a/0019-swap-create-.wants-symlink-to-auto-swap-devices.patch +++ /dev/null @@ -1,87 +0,0 @@ -From c1f9c15f319f7dfb96bcbf2c3cf879f2b4457350 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Mon, 16 Sep 2013 01:08:32 +0200 -Subject: [PATCH] swap: create .wants symlink to 'auto' swap devices - -As we load unit files lazily, we need to make sure something pulls in swap -units that should be started automatically, otherwise the default dependencies -will never be applied. - -This partially reinstates code removed in -commit 64347fc2b983f33e7efb0fd2bb44e133fb9f30f4. - -Also don't order swap devices after swap.target when they are 'nofail'. ---- - src/core/swap.c | 8 ++++++-- - src/fstab-generator/fstab-generator.c | 18 ++++++++++++++++-- - 2 files changed, 22 insertions(+), 4 deletions(-) - -diff --git a/src/core/swap.c b/src/core/swap.c -index 3950860..76c7d45 100644 ---- a/src/core/swap.c -+++ b/src/core/swap.c -@@ -220,8 +220,12 @@ static int swap_add_default_dependencies(Swap *s) { - } - - if (!noauto) { -- r = unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, (nofail ? UNIT_WANTS : UNIT_REQUIRES), -- SPECIAL_SWAP_TARGET, NULL, true); -+ if (nofail) -+ r = unit_add_dependency_by_name_inverse(UNIT(s), -+ UNIT_WANTS, SPECIAL_SWAP_TARGET, NULL, true); -+ else -+ r = unit_add_two_dependencies_by_name_inverse(UNIT(s), -+ UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SWAP_TARGET, NULL, true); - if (r < 0) - return r; - } -diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c -index 6ebe8aa..b73dfa4 100644 ---- a/src/fstab-generator/fstab-generator.c -+++ b/src/fstab-generator/fstab-generator.c -@@ -66,6 +66,7 @@ static int mount_find_pri(struct mntent *me, int *ret) { - static int add_swap(const char *what, struct mntent *me) { - _cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL; - _cleanup_fclose_ FILE *f = NULL; -+ bool noauto; - int r, pri = -1; - - assert(what); -@@ -77,6 +78,8 @@ static int add_swap(const char *what, struct mntent *me) { - return pri; - } - -+ noauto = !!hasmntopt(me, "noauto"); -+ - name = unit_name_from_path(what, ".swap"); - if (!name) - return log_oom(); -@@ -97,8 +100,7 @@ static int add_swap(const char *what, struct mntent *me) { - fprintf(f, - "# Automatically generated by systemd-fstab-generator\n\n" - "[Unit]\n" -- "SourcePath=/etc/fstab\n" -- "\n" -+ "SourcePath=/etc/fstab\n\n" - "[Swap]\n" - "What=%s\n", - what); -@@ -114,6 +116,18 @@ static int add_swap(const char *what, struct mntent *me) { - return -errno; - } - -+ if (!noauto) { -+ lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET ".wants/", name, NULL); -+ if (!lnk) -+ return log_oom(); -+ -+ mkdir_parents_label(lnk, 0755); -+ if (symlink(unit, lnk) < 0) { -+ log_error("Failed to create symlink %s: %m", lnk); -+ return -errno; -+ } -+ } -+ - return 0; - } - diff --git a/0020-cgroup-add-missing-equals-for-BlockIOWeight.patch b/0020-cgroup-add-missing-equals-for-BlockIOWeight.patch deleted file mode 100644 index b8d63a7..0000000 --- a/0020-cgroup-add-missing-equals-for-BlockIOWeight.patch +++ /dev/null @@ -1,22 +0,0 @@ -From f93999bbdbc9e16322d77bda2a4e44c20040808d Mon Sep 17 00:00:00 2001 -From: Gao feng -Date: Mon, 16 Sep 2013 09:57:33 +0800 -Subject: [PATCH] cgroup: add missing equals for BlockIOWeight - ---- - 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 1f41efc..9277dd6 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -92,7 +92,7 @@ void cgroup_context_dump(CGroupContext *c, FILE* f, const char *prefix) { - "%sBlockIOAccounting=%s\n" - "%sMemoryAccounting=%s\n" - "%sCPUShares=%lu\n" -- "%sBlockIOWeight%lu\n" -+ "%sBlockIOWeight=%lu\n" - "%sMemoryLimit=%" PRIu64 "\n" - "%sMemorySoftLimit=%" PRIu64 "\n" - "%sDevicePolicy=%s\n", diff --git a/0021-Assume-that-proc-meminfo-can-be-missing.patch b/0021-Assume-that-proc-meminfo-can-be-missing.patch deleted file mode 100644 index e834c09..0000000 --- a/0021-Assume-that-proc-meminfo-can-be-missing.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0fdb6640bb9de89ca739676bbbb43d3a05a42f50 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 15 Sep 2013 08:40:16 -0400 -Subject: [PATCH] Assume that /proc/meminfo can be missing - -Travis tests are failing, probably because /proc/meminfo is not available -in the test environment. The same might be true in some virtualized systems, -so just treat missing /proc/meminfo as a sign that hibernation is not -possible. ---- - src/shared/sleep-config.c | 3 ++- - src/test/test-fileio.c | 6 +++++- - 2 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c -index 5ec7cce..148c4dc 100644 ---- a/src/shared/sleep-config.c -+++ b/src/shared/sleep-config.c -@@ -172,7 +172,8 @@ static bool enough_memory_for_hibernation(void) { - - r = get_status_field("/proc/meminfo", "\nSwapFree:", &swapfree); - if (r < 0) { -- log_error("Failed to retrieve SwapFree from /proc/meminfo: %s", strerror(-r)); -+ log_full(r == -ENOENT ? LOG_DEBUG : LOG_WARNING, -+ "Failed to retrieve SwapFree from /proc/meminfo: %s", strerror(-r)); - return false; - } - -diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c -index 4a4ed79..3511f3a 100644 ---- a/src/test/test-fileio.c -+++ b/src/test/test-fileio.c -@@ -232,12 +232,16 @@ static void test_executable_is_script(void) { - static void test_status_field(void) { - _cleanup_free_ char *t = NULL, *p = NULL, *s = NULL; - unsigned long long total, buffers; -+ int r; - - assert_se(get_status_field("/proc/self/status", "\nThreads:", &t) == 0); - puts(t); - assert_se(streq(t, "1")); - -- assert_se(get_status_field("/proc/meminfo", "MemTotal:", &p) == 0); -+ r = get_status_field("/proc/meminfo", "MemTotal:", &p); -+ if (r == -ENOENT) -+ return; -+ assert(r == 0); - puts(p); - assert_se(safe_atollu(p, &total) == 0); - diff --git a/0022-transaction.c-do-not-point-users-to-logs-when-unit-n.patch b/0022-transaction.c-do-not-point-users-to-logs-when-unit-n.patch deleted file mode 100644 index e3555ef..0000000 --- a/0022-transaction.c-do-not-point-users-to-logs-when-unit-n.patch +++ /dev/null @@ -1,63 +0,0 @@ -From a38c3d5d4e94c7e11db1ca22126bb11c6b029886 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 15 Sep 2013 12:15:38 -0400 -Subject: [PATCH] transaction.c: do not point users to logs when unit not found - -The logs are unlikely to contain any useful information in this case. - -Also, change "walked on cycle path" to "found dependency on", which -is less technical and indicates the direction. With the old message, -I was never sure if prior units depended on later ones, or vice versa. - -https://bugzilla.redhat.com/show_bug.cgi?id=996133 -https://bugzilla.redhat.com/show_bug.cgi?id=997082 ---- - src/core/transaction.c | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/src/core/transaction.c b/src/core/transaction.c -index 27efef7..203070f 100644 ---- a/src/core/transaction.c -+++ b/src/core/transaction.c -@@ -344,7 +344,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi - assert(!j->transaction_prev); - - /* Does a recursive sweep through the ordering graph, looking -- * for a cycle. If we find cycle we try to break it. */ -+ * for a cycle. If we find a cycle we try to break it. */ - - /* Have we seen this before? */ - if (j->generation == generation) { -@@ -371,7 +371,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi - - /* logging for j not k here here to provide consistent narrative */ - log_info_unit(j->unit->id, -- "Walked on cycle path to %s/%s", -+ "Found dependency on %s/%s", - k->unit->id, job_type_to_string(k->type)); - - if (!delete && -@@ -860,7 +860,7 @@ int transaction_add_job_and_dependencies( - return -EINVAL; - } - -- if (type != JOB_STOP && (unit->load_state == UNIT_ERROR || unit->load_state == UNIT_NOT_FOUND)) { -+ if (type != JOB_STOP && unit->load_state == UNIT_ERROR) { - dbus_set_error(e, BUS_ERROR_LOAD_FAILED, - "Unit %s failed to load: %s. " - "See system logs and 'systemctl status %s' for details.", -@@ -870,6 +870,14 @@ int transaction_add_job_and_dependencies( - return -EINVAL; - } - -+ if (type != JOB_STOP && unit->load_state == UNIT_NOT_FOUND) { -+ dbus_set_error(e, BUS_ERROR_LOAD_FAILED, -+ "Unit %s failed to load: %s.", -+ unit->id, -+ strerror(-unit->load_error)); -+ return -EINVAL; -+ } -+ - if (type != JOB_STOP && unit->load_state == UNIT_MASKED) { - dbus_set_error(e, BUS_ERROR_MASKED, "Unit %s is masked.", unit->id); - return -EADDRNOTAVAIL; diff --git a/0023-Verify-validity-of-session-name-when-received-from-o.patch b/0023-Verify-validity-of-session-name-when-received-from-o.patch deleted file mode 100644 index d13a554..0000000 --- a/0023-Verify-validity-of-session-name-when-received-from-o.patch +++ /dev/null @@ -1,283 +0,0 @@ -From 45f0d8e103c57e9e5e9d92bba1dc2d50b49806de Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 15 Sep 2013 22:26:56 -0400 -Subject: [PATCH] Verify validity of session name when received from outside - -Only ASCII letters and digits are allowed. ---- - Makefile.am | 14 +++++++++++--- - TODO | 3 --- - src/login/login-shared.c | 8 ++++++++ - src/login/login-shared.h | 3 +++ - src/login/logind-dbus.c | 1 + - src/login/logind-session.c | 1 + - src/login/logind-session.h | 1 + - src/login/logind.c | 6 ++++++ - src/login/sd-login.c | 12 +++++++----- - src/shared/cgroup-util.c | 4 +--- - src/shared/def.h | 5 +++++ - src/shared/env-util.c | 5 ++--- - src/shared/replace-var.c | 3 ++- - src/shared/unit-name.c | 5 ++--- - 14 files changed, 50 insertions(+), 21 deletions(-) - create mode 100644 src/login/login-shared.c - create mode 100644 src/login/login-shared.h - -diff --git a/Makefile.am b/Makefile.am -index 7b7539a..6014521 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -2324,7 +2324,10 @@ if HAVE_ACL - libudev_core_la_SOURCES += \ - src/udev/udev-builtin-uaccess.c \ - src/login/logind-acl.c \ -- src/login/sd-login.c -+ src/login/sd-login.c \ -+ src/systemd/sd-login.h \ -+ src/login/login-shared.c \ -+ src/login/login-shared.h - - libudev_core_la_LIBADD += \ - libsystemd-acl.la -@@ -3759,7 +3762,9 @@ libsystemd_logind_core_la_SOURCES = \ - src/login/logind-session-dbus.c \ - src/login/logind-seat-dbus.c \ - src/login/logind-user-dbus.c \ -- src/login/logind-acl.h -+ src/login/logind-acl.h \ -+ src/login/login-shared.c \ -+ src/login/login-shared.h - - libsystemd_logind_core_la_CFLAGS = \ - $(AM_CFLAGS) \ -@@ -3860,7 +3865,10 @@ tests += \ - test-login-tables - - libsystemd_login_la_SOURCES = \ -- src/login/sd-login.c -+ src/login/sd-login.c \ -+ src/systemd/sd-login.h \ -+ src/login/login-shared.c \ -+ src/login/login-shared.h - - libsystemd_login_la_CFLAGS = \ - $(AM_CFLAGS) \ -diff --git a/TODO b/TODO -index 9943b3e..bfeaa81 100644 ---- a/TODO -+++ b/TODO -@@ -142,9 +142,6 @@ Features: - - * journald: make sure ratelimit is actually really per-service with the new cgroup changes - --* libsystemd-logind: sd_session_is_active() and friends: verify -- validity of session name before appending it to a path -- - * gparted needs to disable auto-activation of mount units somehow, or - maybe we should stop doing auto-activation of this after boot - entirely. https://bugzilla.gnome.org/show_bug.cgi?id=701676 -diff --git a/src/login/login-shared.c b/src/login/login-shared.c -new file mode 100644 -index 0000000..ff13c28 ---- /dev/null -+++ b/src/login/login-shared.c -@@ -0,0 +1,8 @@ -+#include "login-shared.h" -+#include "def.h" -+ -+bool session_id_valid(const char *id) { -+ assert(id); -+ -+ return id + strspn(id, LETTERS DIGITS) == '\0'; -+} -diff --git a/src/login/login-shared.h b/src/login/login-shared.h -new file mode 100644 -index 0000000..728ef00 ---- /dev/null -+++ b/src/login/login-shared.h -@@ -0,0 +1,3 @@ -+#include -+ -+bool session_id_valid(const char *id); -diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c -index 345df9f..d052e74 100644 ---- a/src/login/logind-dbus.c -+++ b/src/login/logind-dbus.c -@@ -554,6 +554,7 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message) { - * the audit data and let's better register a new - * ID */ - if (hashmap_get(m->sessions, id)) { -+ log_warning("Existing logind session ID %s used by new audit session, ignoring", id); - audit_id = 0; - - free(id); -diff --git a/src/login/logind-session.c b/src/login/logind-session.c -index a726fb1..2d22a68 100644 ---- a/src/login/logind-session.c -+++ b/src/login/logind-session.c -@@ -41,6 +41,7 @@ Session* session_new(Manager *m, const char *id) { - - assert(m); - assert(id); -+ assert(session_id_valid(id)); - - s = new0(Session, 1); - if (!s) -diff --git a/src/login/logind-session.h b/src/login/logind-session.h -index edaae8d..9cf6485 100644 ---- a/src/login/logind-session.h -+++ b/src/login/logind-session.h -@@ -29,6 +29,7 @@ typedef enum KillWho KillWho; - #include "logind.h" - #include "logind-seat.h" - #include "logind-user.h" -+#include "login-shared.h" - - typedef enum SessionState { - SESSION_OPENING, /* Session scope is being created */ -diff --git a/src/login/logind.c b/src/login/logind.c -index 9094567..4ef92b8 100644 ---- a/src/login/logind.c -+++ b/src/login/logind.c -@@ -684,6 +684,12 @@ int manager_enumerate_sessions(Manager *m) { - if (!dirent_is_file(de)) - continue; - -+ if (!session_id_valid(de->d_name)) { -+ log_warning("Invalid session file name '%s', ignoring.", de->d_name); -+ r = -EINVAL; -+ continue; -+ } -+ - k = manager_add_session(m, de->d_name, &s); - if (k < 0) { - log_error("Failed to add session by file name %s: %s", de->d_name, strerror(-k)); -diff --git a/src/login/sd-login.c b/src/login/sd-login.c -index 8a7838d..71d8c29 100644 ---- a/src/login/sd-login.c -+++ b/src/login/sd-login.c -@@ -31,6 +31,7 @@ - #include "sd-login.h" - #include "strv.h" - #include "fileio.h" -+#include "login-shared.h" - - _public_ int sd_pid_get_session(pid_t pid, char **session) { - if (pid < 0) -@@ -226,17 +227,19 @@ static int file_of_session(const char *session, char **_p) { - - assert(_p); - -- if (session) -+ if (session) { -+ if (!session_id_valid(session)) -+ return -EINVAL; -+ - p = strappend("/run/systemd/sessions/", session); -- else { -- char *buf; -+ } else { -+ _cleanup_free_ char *buf = NULL; - - r = sd_pid_get_session(0, &buf); - if (r < 0) - return r; - - p = strappend("/run/systemd/sessions/", buf); -- free(buf); - } - - if (!p) -@@ -255,7 +258,6 @@ _public_ int sd_session_is_active(const char *session) { - return r; - - r = parse_env_file(p, NEWLINE, "ACTIVE", &s, NULL); -- - if (r < 0) - return r; - -diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c -index 1d545e0..0bffebd 100644 ---- a/src/shared/cgroup-util.c -+++ b/src/shared/cgroup-util.c -@@ -1511,9 +1511,7 @@ char *cg_unescape(const char *p) { - } - - #define CONTROLLER_VALID \ -- "0123456789" \ -- "abcdefghijklmnopqrstuvwxyz" \ -- "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ -+ DIGITS LETTERS \ - "_" - - bool cg_controller_is_valid(const char *p, bool allow_named) { -diff --git a/src/shared/def.h b/src/shared/def.h -index 5abb544..edd0bcf 100644 ---- a/src/shared/def.h -+++ b/src/shared/def.h -@@ -33,3 +33,8 @@ - - #define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT - #define SIGNALS_IGNORE SIGPIPE -+ -+#define DIGITS "0123456789" -+#define LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz" -+#define UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ" -+#define LETTERS LOWERCASE_LETTERS UPPERCASE_LETTERS -diff --git a/src/shared/env-util.c b/src/shared/env-util.c -index 6a52fb9..5e29629 100644 ---- a/src/shared/env-util.c -+++ b/src/shared/env-util.c -@@ -27,11 +27,10 @@ - #include "utf8.h" - #include "util.h" - #include "env-util.h" -+#include "def.h" - - #define VALID_CHARS_ENV_NAME \ -- "0123456789" \ -- "abcdefghijklmnopqrstuvwxyz" \ -- "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ -+ DIGITS LETTERS \ - "_" - - #ifndef ARG_MAX -diff --git a/src/shared/replace-var.c b/src/shared/replace-var.c -index e11c57a..478fc43 100644 ---- a/src/shared/replace-var.c -+++ b/src/shared/replace-var.c -@@ -24,6 +24,7 @@ - #include "macro.h" - #include "util.h" - #include "replace-var.h" -+#include "def.h" - - /* - * Generic infrastructure for replacing @FOO@ style variables in -@@ -40,7 +41,7 @@ static int get_variable(const char *b, char **r) { - if (*b != '@') - return 0; - -- k = strspn(b + 1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ_"); -+ k = strspn(b + 1, UPPERCASE_LETTERS "_"); - if (k <= 0 || b[k+1] != '@') - return 0; - -diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c -index 1baa6eb..8f6c28e 100644 ---- a/src/shared/unit-name.c -+++ b/src/shared/unit-name.c -@@ -26,11 +26,10 @@ - #include "path-util.h" - #include "util.h" - #include "unit-name.h" -+#include "def.h" - - #define VALID_CHARS \ -- "0123456789" \ -- "abcdefghijklmnopqrstuvwxyz" \ -- "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ -+ DIGITS LETTERS \ - ":-_.\\" - - static const char* const unit_type_table[_UNIT_TYPE_MAX] = { diff --git a/0024-udev-rules-avoid-erroring-on-trailing-whitespace.patch b/0024-udev-rules-avoid-erroring-on-trailing-whitespace.patch deleted file mode 100644 index a1145df..0000000 --- a/0024-udev-rules-avoid-erroring-on-trailing-whitespace.patch +++ /dev/null @@ -1,27 +0,0 @@ -From c4f1b97f45f1685c0a4bcba8c6724ce17bb6af19 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Mon, 16 Sep 2013 11:22:35 -0400 -Subject: [PATCH] udev-rules: avoid erroring on trailing whitespace - -https://bugs.archlinux.org/task/36950 ---- - src/udev/udev-rules.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c -index f14158b..6f8b127 100644 ---- a/src/udev/udev-rules.c -+++ b/src/udev/udev-rules.c -@@ -1068,6 +1068,12 @@ static int add_rule(struct udev_rules *rules, char *line, - enum operation_type op; - - if (get_key(rules->udev, &linepos, &key, &op, &value) != 0) { -+ /* Avoid erroring on trailing whitespace. This is probably rare -+ * so save the work for the error case instead of always trying -+ * to strip the trailing whitespace with strstrip(). */ -+ while (isblank(*linepos)) -+ linepos++; -+ - /* If we aren't at the end of the line, this is a parsing error. - * Make a best effort to describe where the problem is. */ - if (*linepos != '\n') { diff --git a/0025-keymap-Add-Samsung-Series-5-Ultra.patch b/0025-keymap-Add-Samsung-Series-5-Ultra.patch deleted file mode 100644 index 7004c85..0000000 --- a/0025-keymap-Add-Samsung-Series-5-Ultra.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 3d2b4b62bfc73a38dce90be5cebdc924db42f63c Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Mon, 16 Sep 2013 14:25:44 -0500 -Subject: [PATCH] keymap: Add Samsung Series 5 [Ultra] - -Also consolidate the wlan key into the "all Samsung" rule to avoid repetition. - -Thanks to Mauro Carvalho Chehab! - -https://bugzilla.redhat.com/show_bug.cgi?id=989103 ---- - hwdb/60-keyboard.hwdb | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index 53e83ad..3862b4c 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -882,6 +882,8 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn* - KEYBOARD_KEY_b1=!prog2 # Fn+F7 run Samsung Magic Doctor (keypressed event is generated twice) - KEYBOARD_KEY_b3=!prog3 # Fn+F8 switch power mode (battery/dynamic/performance) - KEYBOARD_KEY_b4=!wlan # Fn+F9 (X60P) -+ KEYBOARD_KEY_c5=!prog3 # Fn+F8 switch power mode (battery/dynamic/performance) -+ KEYBOARD_KEY_d5=!wlan # Fn+F12 wlan/airplane switch - KEYBOARD_KEY_f7=!f22 # Fn+F10 Touchpad on - KEYBOARD_KEY_f9=!f23 # Fn+F10 Touchpad off - -@@ -889,9 +891,18 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn* - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*300E[457]*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*200E[45]*:pvr* - KEYBOARD_KEY_ce=! # Fn+F1 launch control setting -- KEYBOARD_KEY_d5=! # Fn+F12 Wi-Fi toggle - - # Series 5 -+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*530U*:pvr* -+ KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings -+ KEYBOARD_KEY_a8=! # Fn Lock - Function lock on -+ KEYBOARD_KEY_a9=! # Fn Lock - Function lock off -+ -+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr* -+ KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings -+ KEYBOARD_KEY_a8=! # Fn Lock - Function lock on -+ KEYBOARD_KEY_a9=! # Fn Lock - Function lock off -+ - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* - KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings - KEYBOARD_KEY_a0=!mute # Fn+F6 mute -@@ -900,7 +911,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* - KEYBOARD_KEY_97=!kbdillumdown # Fn+F9 keyboard backlight down - KEYBOARD_KEY_96=!kbdillumup # Fn+F10 keyboard backlight up - KEYBOARD_KEY_b3=!prog3 # Fn+F11 fan/cooling mode changer -- KEYBOARD_KEY_d5=!wlan # Fn+F12 wlan/airplane switch - - # Series 9 - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr* -@@ -936,9 +946,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700T*:pvr* - KEYBOARD_KEY_ad=leftmeta - --keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn535U*:pvr* -- KEYBOARD_KEY_d5=!wlan -- - ########################################################### - # SONY - ########################################################### diff --git a/0026-login-fix-login_is_valid-test.patch b/0026-login-fix-login_is_valid-test.patch deleted file mode 100644 index 2d2a8eb..0000000 --- a/0026-login-fix-login_is_valid-test.patch +++ /dev/null @@ -1,149 +0,0 @@ -From 87e08d21857b2b2e59f3480e6d0538b535a5897c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 16 Sep 2013 11:04:20 -0500 -Subject: [PATCH] login: fix login_is_valid test - ---- - Makefile.am | 10 +++++++++- - src/login/login-shared.c | 23 ++++++++++++++++++++++- - src/login/login-shared.h | 21 +++++++++++++++++++++ - src/login/test-login-shared.c | 38 ++++++++++++++++++++++++++++++++++++++ - 4 files changed, 90 insertions(+), 2 deletions(-) - create mode 100644 src/login/test-login-shared.c - -diff --git a/Makefile.am b/Makefile.am -index 6014521..eae001b 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -3836,6 +3836,13 @@ test_login_LDADD = \ - libsystemd-login-internal.la \ - libsystemd-shared.la - -+test_login_shared_SOURCES = \ -+ src/login/test-login-shared.c -+ -+test_login_shared_LDADD = \ -+ libsystemd-login-internal.la \ -+ libsystemd-shared.la -+ - test_inhibit_SOURCES = \ - src/login/test-inhibit.c - -@@ -3862,7 +3869,8 @@ manual_tests += \ - test-inhibit - - tests += \ -- test-login-tables -+ test-login-tables \ -+ test-login-shared - - libsystemd_login_la_SOURCES = \ - src/login/sd-login.c \ -diff --git a/src/login/login-shared.c b/src/login/login-shared.c -index ff13c28..054c775 100644 ---- a/src/login/login-shared.c -+++ b/src/login/login-shared.c -@@ -1,8 +1,29 @@ -+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -+ -+/*** -+ This file is part of systemd. -+ -+ Copyright 2013 Zbigniew Jędrzejewski-Szmek -+ -+ systemd is free software; you can redistribute it and/or modify it -+ under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. -+ -+ systemd is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public License -+ along with systemd; If not, see . -+***/ -+ - #include "login-shared.h" - #include "def.h" - - bool session_id_valid(const char *id) { - assert(id); - -- return id + strspn(id, LETTERS DIGITS) == '\0'; -+ return id[0] && id[strspn(id, LETTERS DIGITS)] == '\0'; - } -diff --git a/src/login/login-shared.h b/src/login/login-shared.h -index 728ef00..b2787c9 100644 ---- a/src/login/login-shared.h -+++ b/src/login/login-shared.h -@@ -1,3 +1,24 @@ -+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -+ -+/*** -+ This file is part of systemd. -+ -+ Copyright 2013 Zbigniew Jędrzejewski-Szmek -+ -+ systemd is free software; you can redistribute it and/or modify it -+ under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. -+ -+ systemd is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public License -+ along with systemd; If not, see . -+***/ -+ - #include - - bool session_id_valid(const char *id); -diff --git a/src/login/test-login-shared.c b/src/login/test-login-shared.c -new file mode 100644 -index 0000000..2df6029 ---- /dev/null -+++ b/src/login/test-login-shared.c -@@ -0,0 +1,38 @@ -+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -+ -+/*** -+ This file is part of systemd. -+ -+ Copyright 2013 Zbigniew Jędrzejewski-Szmek -+ -+ systemd is free software; you can redistribute it and/or modify it -+ under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. -+ -+ systemd is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public License -+ along with systemd; If not, see . -+***/ -+ -+#include "macro.h" -+#include "login-shared.h" -+ -+static void test_session_id_valid(void) { -+ assert_se(session_id_valid("c1")); -+ assert_se(session_id_valid("1234")); -+ -+ assert_se(!session_id_valid("1-2")); -+ assert_se(!session_id_valid("")); -+ assert_se(!session_id_valid("\tid")); -+} -+ -+int main(int argc, char* argv[]) { -+ test_session_id_valid(); -+ -+ return 0; -+} diff --git a/0027-polkit-Avoid-race-condition-in-scraping-proc.patch b/0027-polkit-Avoid-race-condition-in-scraping-proc.patch deleted file mode 100644 index 1ba391e..0000000 --- a/0027-polkit-Avoid-race-condition-in-scraping-proc.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 72fd713962ca2c2450e23b01d9e22017a7e28fd4 Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Thu, 22 Aug 2013 13:55:21 -0400 -Subject: [PATCH] polkit: Avoid race condition in scraping /proc - -If a calling process execve()s a setuid program, it can appear to be -uid 0. Since we're receiving requests over DBus, avoid this by simply -passing system-bus-name as a subject. ---- - src/shared/polkit.c | 31 +++++-------------------------- - 1 file changed, 5 insertions(+), 26 deletions(-) - -diff --git a/src/shared/polkit.c b/src/shared/polkit.c -index cea7074..1c5e9e3 100644 ---- a/src/shared/polkit.c -+++ b/src/shared/polkit.c -@@ -38,12 +38,8 @@ int verify_polkit( - - #ifdef ENABLE_POLKIT - DBusMessage *m = NULL, *reply = NULL; -- const char *unix_process = "unix-process", *pid = "pid", *starttime = "start-time", *cancel_id = ""; -+ const char *system_bus_name = "system-bus-name", *name = "name", *cancel_id = ""; - uint32_t flags = interactive ? 1 : 0; -- pid_t pid_raw; -- uint32_t pid_u32; -- unsigned long long starttime_raw; -- uint64_t starttime_u64; - DBusMessageIter iter_msg, iter_struct, iter_array, iter_dict, iter_variant; - int r; - dbus_bool_t authorized = FALSE, challenge = FALSE; -@@ -68,14 +64,6 @@ int verify_polkit( - - #ifdef ENABLE_POLKIT - -- pid_raw = bus_get_unix_process_id(c, sender, error); -- if (pid_raw == 0) -- return -EINVAL; -- -- r = get_starttime_of_pid(pid_raw, &starttime_raw); -- if (r < 0) -- return r; -- - m = dbus_message_new_method_call( - "org.freedesktop.PolicyKit1", - "/org/freedesktop/PolicyKit1/Authority", -@@ -86,22 +74,13 @@ int verify_polkit( - - dbus_message_iter_init_append(m, &iter_msg); - -- pid_u32 = (uint32_t) pid_raw; -- starttime_u64 = (uint64_t) starttime_raw; -- - if (!dbus_message_iter_open_container(&iter_msg, DBUS_TYPE_STRUCT, NULL, &iter_struct) || -- !dbus_message_iter_append_basic(&iter_struct, DBUS_TYPE_STRING, &unix_process) || -+ !dbus_message_iter_append_basic(&iter_struct, DBUS_TYPE_STRING, &system_bus_name) || - !dbus_message_iter_open_container(&iter_struct, DBUS_TYPE_ARRAY, "{sv}", &iter_array) || - !dbus_message_iter_open_container(&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict) || -- !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &pid) || -- !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "u", &iter_variant) || -- !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_UINT32, &pid_u32) || -- !dbus_message_iter_close_container(&iter_dict, &iter_variant) || -- !dbus_message_iter_close_container(&iter_array, &iter_dict) || -- !dbus_message_iter_open_container(&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict) || -- !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &starttime) || -- !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "t", &iter_variant) || -- !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_UINT64, &starttime_u64) || -+ !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &name) || -+ !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "s", &iter_variant) || -+ !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_STRING, &sender) || - !dbus_message_iter_close_container(&iter_dict, &iter_variant) || - !dbus_message_iter_close_container(&iter_array, &iter_dict) || - !dbus_message_iter_close_container(&iter_struct, &iter_array) || --- -1.8.3.1 - diff --git a/sources b/sources index 7312d7d..a6b1eab 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -7799f3cc9d289b8db1c1fa56ae7ecd88 systemd-207.tar.xz +6b30239cbea4cb2c832625f1012dbe03 systemd-208.tar.xz diff --git a/systemd.spec b/systemd.spec index 390d9d5..e7ea4b5 100644 --- a/systemd.spec +++ b/systemd.spec @@ -15,8 +15,8 @@ Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 207 -Release: 5%{?gitcommit:.git%{gitcommit}}%{?dist} +Version: 208 +Release: 1%{?gitcommit:.git%{gitcommit}}%{?dist} # For a breakdown of the licensing, see README License: LGPLv2+ and MIT and GPLv2+ Summary: A System and Service Manager @@ -36,32 +36,6 @@ Source4: listen.conf # Prevent accidental removal of the systemd package Source6: yum-protect-systemd.conf -Patch0003: 0003-core-cgroup-first-print-then-free.patch -Patch0004: 0004-swap-fix-reverse-dependencies.patch -Patch0005: 0005-update-TODO.patch -Patch0006: 0006-cryptsetup-generator-don-t-create-tmp-swap-units.patch -Patch0007: 0007-cryptsetup-generator-allow-specifying-options-in-pro.patch -Patch0008: 0008-automount-rename-repeat_unmont-to-repeat_unmount.patch -Patch0009: 0009-cgroup-add-the-missing-setting-of-variable-s-value.patch -Patch0010: 0010-cgroup-correct-the-log-information.patch -Patch0011: 0011-cgroup-fix-incorrectly-setting-memory-cgroup.patch -Patch0012: 0012-random-seed-we-should-return-errno-of-failed-loop_wr.patch -Patch0013: 0013-update-TODO.patch -Patch0014: 0014-libudev-fix-move_later-comparison.patch -Patch0015: 0015-man-document-luks.options-kernel-commandline.patch -Patch0016: 0016-keymap-remove-some-commented-out-lines.patch -Patch0017: 0017-Advertise-hibernation-only-if-there-s-enough-free-sw.patch -Patch0018: 0018-README-add-SCSI-BSG-option.patch -Patch0019: 0019-swap-create-.wants-symlink-to-auto-swap-devices.patch -Patch0020: 0020-cgroup-add-missing-equals-for-BlockIOWeight.patch -Patch0021: 0021-Assume-that-proc-meminfo-can-be-missing.patch -Patch0022: 0022-transaction.c-do-not-point-users-to-logs-when-unit-n.patch -Patch0023: 0023-Verify-validity-of-session-name-when-received-from-o.patch -Patch0024: 0024-udev-rules-avoid-erroring-on-trailing-whitespace.patch -Patch0025: 0025-keymap-Add-Samsung-Series-5-Ultra.patch -Patch0026: 0026-login-fix-login_is_valid-test.patch -Patch0027: 0027-polkit-Avoid-race-condition-in-scraping-proc.patch - # kernel-install patch for grubby, drop if grubby is obsolete Patch1000: kernel-install-grubby.patch @@ -395,6 +369,10 @@ systemctl start systemd-udevd.service >/dev/null 2>&1 || : udevadm hwdb --update >/dev/null 2>&1 || : journalctl --update-catalog >/dev/null 2>&1 || : +# Make sure new journal files +chgrp systemd-journal /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || : +chmod g+s /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || : + # Stop-gap until rsyslog.rpm does this on its own. (This is supposed # to fail when the link already exists) ln -s /usr/lib/systemd/system/rsyslog.service /etc/systemd/system/syslog.service >/dev/null 2>&1 || : @@ -619,10 +597,12 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g %{_datadir}/bash-completion/completions/kernel-install %{_datadir}/bash-completion/completions/systemd-run %{_datadir}/zsh/site-functions/* -%ghost %{_localstatedir}/lib/random-seed -%dir %{_localstatedir}/lib/systemd/ +%ghost %dir %{_localstatedir}/lib/systemd/ +%ghost %dir %{_localstatedir}/lib/systemd/coredump +%ghost %dir %{_localstatedir}/lib/systemd/catalog +%ghost %dir %{_localstatedir}/lib/systemd/backlight +%ghost %{_localstatedir}/lib/systemd/random-seed %ghost %{_localstatedir}/lib/systemd/catalog/database -%ghost %dir %{_localstatedir}/lib/backlight/ # Make sure we don't remove runlevel targets from F14 alpha installs, # but make sure we don't create then anew. @@ -690,21 +670,24 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g %{_datadir}/systemd/gatewayd %changelog +* Wed Oct 2 2013 Lennart Poettering 207-5 - Do not create /var/var/... dirs * Wed Sep 18 2013 Zbigniew Jędrzejewski-Szmek 207-4 - Fix policykit authentication -Resolves: rhbz#1006680 +- Resolves: rhbz#1006680 * Tue Sep 17 2013 Harald Hoyer 207-3 - fixed login -Resolves: rhbz#1005233 +- Resolves: rhbz#1005233 * Mon Sep 16 2013 Harald Hoyer 207-2 - add some upstream fixes for 207 - fixed swap activation -Resolves: rhbz#1008604 +- Resolves: rhbz#1008604 * Fri Sep 13 2013 Lennart Poettering - 207-1 - New upstream release