Patches for selinux issue and other problems
This commit is contained in:
parent
e2168b5f24
commit
436654a8a5
24
0001-NEWS-fix-date.patch
Normal file
24
0001-NEWS-fix-date.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
From 39315f9f8dd5a16b4561c5efffc6114c75835011 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Fri, 22 May 2015 01:37:16 +0200
|
||||||
|
Subject: [PATCH] NEWS: fix date
|
||||||
|
|
||||||
|
Ah, bummer, it's tagged an now I realize I didn't fix the date. Let's do
|
||||||
|
so now, post-commit.
|
||||||
|
---
|
||||||
|
NEWS | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 7a4621cc5d..f72f502129 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -227,7 +227,7 @@ CHANGES WITH 220:
|
||||||
|
Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Will
|
||||||
|
Woods, Zachary Cook, Zbigniew Jędrzejewski-Szmek
|
||||||
|
|
||||||
|
- -- Berlin, 2015-05-??
|
||||||
|
+ -- Berlin, 2015-05-22
|
||||||
|
|
||||||
|
CHANGES WITH 219:
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
From 4db1a8d691a85aa1f75b7eeb283246f488e47a3b Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Jason S. McMullan" <jason.mcmullan@gmail.com>
|
||||||
|
Date: Fri, 22 May 2015 20:30:01 +0200
|
||||||
|
Subject: [PATCH] udev/net_id: Only read the first 64 bytes of PCI config space
|
||||||
|
|
||||||
|
The original code used fread(), which on some libc implementions
|
||||||
|
(ie glibc 2.17) would pre-read a full 4K (PAGE_SIZE) of the
|
||||||
|
PCI config space, when only 64 bytes were requested.
|
||||||
|
|
||||||
|
I have recently come across PCIe hardware which responds with
|
||||||
|
Completion Timeouts when accesses above 256 bytes are attempted.
|
||||||
|
|
||||||
|
This can cause server systems with GHES/AEPI support to cause
|
||||||
|
and immediate kernel panic due to the failed PCI transaction.
|
||||||
|
|
||||||
|
This change replaces the buffered fread() with an explict
|
||||||
|
unbuffered read() of 64 bytes, which corrects this issue by
|
||||||
|
only reading the guaranteed first 64 bytes of PCIe config space.
|
||||||
|
|
||||||
|
(cherry picked from commit 0454229c100a2113ba82df55703436d6cb2c492b)
|
||||||
|
---
|
||||||
|
src/udev/udev-builtin-net_id.c | 9 +++++----
|
||||||
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
|
||||||
|
index 78aef206b2..448920507a 100644
|
||||||
|
--- a/src/udev/udev-builtin-net_id.c
|
||||||
|
+++ b/src/udev/udev-builtin-net_id.c
|
||||||
|
@@ -91,6 +91,7 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
@@ -166,15 +167,15 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
|
||||||
|
|
||||||
|
/* read the 256 bytes PCI configuration space to check the multi-function bit */
|
||||||
|
static bool is_pci_multifunction(struct udev_device *dev) {
|
||||||
|
- _cleanup_fclose_ FILE *f = NULL;
|
||||||
|
+ _cleanup_close_ int fd = -1;
|
||||||
|
const char *filename;
|
||||||
|
uint8_t config[64];
|
||||||
|
|
||||||
|
filename = strjoina(udev_device_get_syspath(dev), "/config");
|
||||||
|
- f = fopen(filename, "re");
|
||||||
|
- if (!f)
|
||||||
|
+ fd = open(filename, O_RDONLY | O_CLOEXEC);
|
||||||
|
+ if (fd < 0)
|
||||||
|
return false;
|
||||||
|
- if (fread(&config, sizeof(config), 1, f) != 1)
|
||||||
|
+ if (read(fd, &config, sizeof(config)) != sizeof(config))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* bit 0-6 header type, bit 7 multi/single function device */
|
@ -0,0 +1,58 @@
|
|||||||
|
From 0628a6f0ffc097c0061d7d03e39c912eba91d1e3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
|
||||||
|
Date: Fri, 22 May 2015 23:40:19 +0200
|
||||||
|
Subject: [PATCH] bootctl: ferror must be called before FILE is closed
|
||||||
|
|
||||||
|
Otherwise it will not show any error stored
|
||||||
|
|
||||||
|
(cherry picked from commit 717442507b4b11aa1d76810d7b12b15948c7a250)
|
||||||
|
---
|
||||||
|
src/boot/bootctl.c | 16 +++++++---------
|
||||||
|
1 file changed, 7 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c
|
||||||
|
index 3a007578dc..ba534b172e 100644
|
||||||
|
--- a/src/boot/bootctl.c
|
||||||
|
+++ b/src/boot/bootctl.c
|
||||||
|
@@ -884,7 +884,7 @@ static int install_loader_config(const char *esp_path) {
|
||||||
|
char *p;
|
||||||
|
char line[64];
|
||||||
|
char *machine = NULL;
|
||||||
|
- FILE *f;
|
||||||
|
+ _cleanup_fclose_ FILE *f = NULL, *g = NULL;
|
||||||
|
|
||||||
|
f = fopen("/etc/machine-id", "re");
|
||||||
|
if (!f)
|
||||||
|
@@ -899,18 +899,16 @@ static int install_loader_config(const char *esp_path) {
|
||||||
|
if (strlen(line) == 32)
|
||||||
|
machine = line;
|
||||||
|
}
|
||||||
|
- fclose(f);
|
||||||
|
|
||||||
|
if (!machine)
|
||||||
|
return -ESRCH;
|
||||||
|
|
||||||
|
p = strjoina(esp_path, "/loader/loader.conf");
|
||||||
|
- f = fopen(p, "wxe");
|
||||||
|
- if (f) {
|
||||||
|
- fprintf(f, "#timeout 3\n");
|
||||||
|
- fprintf(f, "default %s-*\n", machine);
|
||||||
|
- fclose(f);
|
||||||
|
- if (ferror(f))
|
||||||
|
+ g = fopen(p, "wxe");
|
||||||
|
+ if (g) {
|
||||||
|
+ fprintf(g, "#timeout 3\n");
|
||||||
|
+ fprintf(g, "default %s-*\n", machine);
|
||||||
|
+ if (ferror(g))
|
||||||
|
return log_error_errno(EIO, "Failed to write \"%s\": %m", p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -926,7 +924,7 @@ static int help(void) {
|
||||||
|
" --path=PATH Path to the EFI System Partition (ESP)\n"
|
||||||
|
" --no-variables Don't touch EFI variables\n"
|
||||||
|
"\n"
|
||||||
|
- "Comands:\n"
|
||||||
|
+ "Commands:\n"
|
||||||
|
" status Show status of installed systemd-boot and EFI variables\n"
|
||||||
|
" install Install systemd-boot to the ESP and EFI variables\n"
|
||||||
|
" update Update systemd-boot in the ESP and EFI variables\n"
|
32
0004-fix-typos-in-systemd-nspawn-man-page.patch
Normal file
32
0004-fix-typos-in-systemd-nspawn-man-page.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From cf118c70b6fa165db6d4eeccac3c8b88d9170d2f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jonathan Boulle <jonathan.boulle@coreos.com>
|
||||||
|
Date: Fri, 22 May 2015 20:11:01 -0700
|
||||||
|
Subject: [PATCH] fix typos in systemd-nspawn man page
|
||||||
|
|
||||||
|
(cherry picked from commit 7c918141edad0063a82411e0f9637e72a8aba223)
|
||||||
|
---
|
||||||
|
man/systemd-nspawn.xml | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
|
||||||
|
index 6a5db86cec..06285edc0b 100644
|
||||||
|
--- a/man/systemd-nspawn.xml
|
||||||
|
+++ b/man/systemd-nspawn.xml
|
||||||
|
@@ -330,7 +330,7 @@
|
||||||
|
first host UID to assign to the container, the second
|
||||||
|
parameter specifies the number of host UIDs to assign to the
|
||||||
|
container. If the second parameter is omitted, 65536 UIDs are
|
||||||
|
- assigned. If the first parameter is also ommitted (and hence
|
||||||
|
+ assigned. If the first parameter is also omitted (and hence
|
||||||
|
no parameter passed at all), the first UID assigned to the
|
||||||
|
container is read from the owner of the root directory of the
|
||||||
|
container's directory tree. By default no user namespacing is
|
||||||
|
@@ -454,7 +454,7 @@
|
||||||
|
container port number in the range from 1 to 65535. The
|
||||||
|
protocol specifier and its separating colon may be omitted, in
|
||||||
|
which case <literal>tcp</literal> is assumed. The container
|
||||||
|
- port number and its colon may be ommitted, in which case the
|
||||||
|
+ port number and its colon may be omitted, in which case the
|
||||||
|
same port as the host port is implied. This option is only
|
||||||
|
supported if private networking is used, such as
|
||||||
|
<option>--network-veth</option> or
|
23
0005-bootctl-fix-an-error-check.patch
Normal file
23
0005-bootctl-fix-an-error-check.patch
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
From 6f1181c3d69c1bd38df5c89ca844686fbd4d1218 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
|
||||||
|
Date: Sat, 23 May 2015 13:02:56 +0200
|
||||||
|
Subject: [PATCH] bootctl: fix an error check
|
||||||
|
|
||||||
|
(cherry picked from commit dd114e116bf73a616c95a5b9e400199eb3bfa4c7)
|
||||||
|
---
|
||||||
|
src/boot/bootctl.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c
|
||||||
|
index ba534b172e..1e65597acf 100644
|
||||||
|
--- a/src/boot/bootctl.c
|
||||||
|
+++ b/src/boot/bootctl.c
|
||||||
|
@@ -805,7 +805,7 @@ static int remove_boot_efi(const char *esp_path) {
|
||||||
|
continue;
|
||||||
|
|
||||||
|
fd = openat(dirfd(d), de->d_name, O_RDONLY|O_CLOEXEC);
|
||||||
|
- if (r < 0)
|
||||||
|
+ if (fd < 0)
|
||||||
|
return log_error_errno(errno, "Failed to open \"%s/%s\" for reading: %m", p, de->d_name);
|
||||||
|
|
||||||
|
r = get_file_version(fd, &v);
|
@ -1,4 +1,4 @@
|
|||||||
From 040e689654ef08c63ab93bf0875865398e8d9c91 Mon Sep 17 00:00:00 2001
|
From 8bfef09df8e1011c6f413822f4455d084b30ba15 Mon Sep 17 00:00:00 2001
|
||||||
From: Tom Gundersen <teg@jklm.no>
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
Date: Sun, 24 May 2015 15:20:36 +0200
|
Date: Sun, 24 May 2015 15:20:36 +0200
|
||||||
Subject: [PATCH] udevd: event - fix event queue in daemenozied mode
|
Subject: [PATCH] udevd: event - fix event queue in daemenozied mode
|
||||||
@ -11,12 +11,14 @@ main process, but that brake in daemonized mode. Relax the restriction
|
|||||||
to only allow one process to add events to the queue.
|
to only allow one process to add events to the queue.
|
||||||
|
|
||||||
Reported by Mantas Mikulėnas.
|
Reported by Mantas Mikulėnas.
|
||||||
|
|
||||||
|
(cherry picked from commit 040e689654ef08c63ab93bf0875865398e8d9c91)
|
||||||
---
|
---
|
||||||
src/udev/udevd.c | 7 ++++---
|
src/udev/udevd.c | 7 ++++---
|
||||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
||||||
index 4a44b03..b33a262 100644
|
index afd4640ad1..2a9a429e66 100644
|
||||||
--- a/src/udev/udevd.c
|
--- a/src/udev/udevd.c
|
||||||
+++ b/src/udev/udevd.c
|
+++ b/src/udev/udevd.c
|
||||||
@@ -564,7 +564,10 @@ static int event_queue_insert(Manager *manager, struct udev_device *dev) {
|
@@ -564,7 +564,10 @@ static int event_queue_insert(Manager *manager, struct udev_device *dev) {
|
||||||
@ -40,6 +42,3 @@ index 4a44b03..b33a262 100644
|
|||||||
manager->fd_ep = -1;
|
manager->fd_ep = -1;
|
||||||
manager->fd_ctrl = -1;
|
manager->fd_ctrl = -1;
|
||||||
manager->fd_uevent = -1;
|
manager->fd_uevent = -1;
|
||||||
--
|
|
||||||
2.3.1
|
|
||||||
|
|
32
0007-nspawn-be-verbose-about-interface-names.patch
Normal file
32
0007-nspawn-be-verbose-about-interface-names.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From 3f712cd14c3af1ba2d177f5aa72ee63df9a41d0f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Umut Tezduyar Lindskog <umut.tezduyar@axis.com>
|
||||||
|
Date: Fri, 22 May 2015 16:02:09 +0200
|
||||||
|
Subject: [PATCH] nspawn: be verbose about interface names
|
||||||
|
|
||||||
|
Allowed interface name is relatively small. Lets not make
|
||||||
|
users go in to the source code to figure out what happened.
|
||||||
|
|
||||||
|
--machine=debian-tree conflicts with
|
||||||
|
--machine=debian-tree2
|
||||||
|
|
||||||
|
ex: Failed to add new veth \
|
||||||
|
interfaces (host0, vb-debian-tree): File exists
|
||||||
|
|
||||||
|
(cherry picked from commit 637aa8a36ce21e0c83466d9b91ee1bfad2404d1c)
|
||||||
|
---
|
||||||
|
src/nspawn/nspawn.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
|
||||||
|
index 500936387f..646edea700 100644
|
||||||
|
--- a/src/nspawn/nspawn.c
|
||||||
|
+++ b/src/nspawn/nspawn.c
|
||||||
|
@@ -2627,7 +2627,7 @@ static int setup_veth(pid_t pid, char iface_name[IFNAMSIZ], int *ifi) {
|
||||||
|
|
||||||
|
r = sd_rtnl_call(rtnl, m, 0, NULL);
|
||||||
|
if (r < 0)
|
||||||
|
- return log_error_errno(r, "Failed to add new veth interfaces: %m");
|
||||||
|
+ return log_error_errno(r, "Failed to add new veth interfaces (host0, %s): %m", iface_name);
|
||||||
|
|
||||||
|
i = (int) if_nametoindex(iface_name);
|
||||||
|
if (i <= 0)
|
41
0008-shared-generator-correct-path-to-systemd-fsck.patch
Normal file
41
0008-shared-generator-correct-path-to-systemd-fsck.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
From 52125df42e5c9f207ccb4455593e2897bed6fbd6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mike Gilbert <floppym@gentoo.org>
|
||||||
|
Date: Sun, 24 May 2015 16:33:35 -0400
|
||||||
|
Subject: [PATCH] shared: generator - correct path to systemd-fsck
|
||||||
|
|
||||||
|
In generated systemd-fsck-root.service. This would break if rootprefix
|
||||||
|
is not /usr/lib/systemd.
|
||||||
|
|
||||||
|
[tomegun: flesh out commit message]
|
||||||
|
|
||||||
|
(cherry picked from commit 77eb82f9f0f60535ab5f585834ed6e66cf39b184)
|
||||||
|
---
|
||||||
|
Makefile.am | 1 +
|
||||||
|
src/shared/generator.c | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index 3821ee5eb4..dd1e9e4e48 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -188,6 +188,7 @@ AM_CPPFLAGS = \
|
||||||
|
-DCATALOG_DATABASE=\"$(catalogstatedir)/database\" \
|
||||||
|
-DSYSTEMD_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/systemd-cgroups-agent\" \
|
||||||
|
-DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/systemd\" \
|
||||||
|
+ -DSYSTEMD_FSCK_PATH=\"$(rootlibexecdir)/systemd-fsck\" \
|
||||||
|
-DSYSTEMD_SHUTDOWN_BINARY_PATH=\"$(rootlibexecdir)/systemd-shutdown\" \
|
||||||
|
-DSYSTEMD_SLEEP_BINARY_PATH=\"$(rootlibexecdir)/systemd-sleep\" \
|
||||||
|
-DSYSTEMCTL_BINARY_PATH=\"$(rootbindir)/systemctl\" \
|
||||||
|
diff --git a/src/shared/generator.c b/src/shared/generator.c
|
||||||
|
index 81284995f5..807569a1b8 100644
|
||||||
|
--- a/src/shared/generator.c
|
||||||
|
+++ b/src/shared/generator.c
|
||||||
|
@@ -61,7 +61,7 @@ static int write_fsck_sysroot_service(const char *dir, const char *what) {
|
||||||
|
"[Service]\n"
|
||||||
|
"Type=oneshot\n"
|
||||||
|
"RemainAfterExit=yes\n"
|
||||||
|
- "ExecStart=/usr/lib/systemd/systemd-fsck %2$s\n"
|
||||||
|
+ "ExecStart=" SYSTEMD_FSCK_PATH " %2$s\n"
|
||||||
|
"TimeoutSec=0\n",
|
||||||
|
program_invocation_short_name,
|
||||||
|
what,
|
63
0009-networkd-fix-IFF_UP-when-ipv6-support-is-disabled.patch
Normal file
63
0009-networkd-fix-IFF_UP-when-ipv6-support-is-disabled.patch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
From c88fd204e9822cd92d97a93f9120c9d58d3a5037 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
|
Date: Mon, 25 May 2015 17:34:47 +0200
|
||||||
|
Subject: [PATCH] networkd: fix IFF_UP when ipv6 support is disabled
|
||||||
|
|
||||||
|
Passing ipv6 options (even when they should be noops) caused IFF_UP to fail when
|
||||||
|
ipv6 was supported.
|
||||||
|
|
||||||
|
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90103
|
||||||
|
(cherry picked from commit 01d28f81a782616b6daa84a42447fd4939783a66)
|
||||||
|
---
|
||||||
|
src/network/networkd-link.c | 31 +++++++++++++++++--------------
|
||||||
|
1 file changed, 17 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
|
||||||
|
index 8b0de1f741..f039a2d687 100644
|
||||||
|
--- a/src/network/networkd-link.c
|
||||||
|
+++ b/src/network/networkd-link.c
|
||||||
|
@@ -1010,27 +1010,30 @@ static int link_up(Link *link) {
|
||||||
|
if (r < 0)
|
||||||
|
return log_link_error_errno(link, r, "Could not open IFLA_AF_SPEC container: %m");
|
||||||
|
|
||||||
|
- r = sd_rtnl_message_open_container(req, AF_INET6);
|
||||||
|
- if (r < 0)
|
||||||
|
- return log_link_error_errno(link, r, "Could not open AF_INET6 container: %m");
|
||||||
|
+ if (socket_ipv6_is_supported()) {
|
||||||
|
+ /* if the kernel lacks ipv6 support setting IFF_UP fails if any ipv6 options are passed */
|
||||||
|
+ r = sd_rtnl_message_open_container(req, AF_INET6);
|
||||||
|
+ if (r < 0)
|
||||||
|
+ return log_link_error_errno(link, r, "Could not open AF_INET6 container: %m");
|
||||||
|
|
||||||
|
- ipv6ll_mode = link_ipv6ll_enabled(link) ? IN6_ADDR_GEN_MODE_EUI64 : IN6_ADDR_GEN_MODE_NONE;
|
||||||
|
- r = sd_rtnl_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, ipv6ll_mode);
|
||||||
|
- if (r < 0)
|
||||||
|
- return log_link_error_errno(link, r, "Could not append IFLA_INET6_ADDR_GEN_MODE: %m");
|
||||||
|
+ ipv6ll_mode = link_ipv6ll_enabled(link) ? IN6_ADDR_GEN_MODE_EUI64 : IN6_ADDR_GEN_MODE_NONE;
|
||||||
|
+ r = sd_rtnl_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, ipv6ll_mode);
|
||||||
|
+ if (r < 0)
|
||||||
|
+ return log_link_error_errno(link, r, "Could not append IFLA_INET6_ADDR_GEN_MODE: %m");
|
||||||
|
+
|
||||||
|
+ if (!in_addr_is_null(AF_INET6, &link->network->ipv6_token)) {
|
||||||
|
+ r = sd_rtnl_message_append_in6_addr(req, IFLA_INET6_TOKEN, &link->network->ipv6_token.in6);
|
||||||
|
+ if (r < 0)
|
||||||
|
+ return log_link_error_errno(link, r, "Could not append IFLA_INET6_TOKEN: %m");
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (!in_addr_is_null(AF_INET6, &link->network->ipv6_token)) {
|
||||||
|
- r = sd_rtnl_message_append_in6_addr(req, IFLA_INET6_TOKEN, &link->network->ipv6_token.in6);
|
||||||
|
+ r = sd_rtnl_message_close_container(req);
|
||||||
|
if (r < 0)
|
||||||
|
- return log_link_error_errno(link, r, "Could not append IFLA_INET6_TOKEN: %m");
|
||||||
|
+ return log_link_error_errno(link, r, "Could not close AF_INET6 container: %m");
|
||||||
|
}
|
||||||
|
|
||||||
|
r = sd_rtnl_message_close_container(req);
|
||||||
|
if (r < 0)
|
||||||
|
- return log_link_error_errno(link, r, "Could not close AF_INET6 container: %m");
|
||||||
|
-
|
||||||
|
- r = sd_rtnl_message_close_container(req);
|
||||||
|
- if (r < 0)
|
||||||
|
return log_link_error_errno(link, r, "Could not close IFLA_AF_SPEC container: %m");
|
||||||
|
|
||||||
|
r = sd_rtnl_call_async(link->manager->rtnl, req, link_up_handler, link, 0, NULL);
|
28
0010-import-dkr-avoid-NULL-pointer-dereference.patch
Normal file
28
0010-import-dkr-avoid-NULL-pointer-dereference.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
From 8241402c1aadd32f1918d75d04da485430818dcb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
|
Date: Mon, 25 May 2015 22:47:42 +0200
|
||||||
|
Subject: [PATCH] import: dkr - avoid NULL-pointer dereference
|
||||||
|
|
||||||
|
A malformed manifest could in principle cause a NULL pointer dereference of. Check
|
||||||
|
for this and fail early.
|
||||||
|
|
||||||
|
Fixes CID 1299642.
|
||||||
|
|
||||||
|
(cherry picked from commit 37591152d261ba980b8992de37ee940c9e5c5da0)
|
||||||
|
---
|
||||||
|
src/import/pull-dkr.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/import/pull-dkr.c b/src/import/pull-dkr.c
|
||||||
|
index 40aca786a5..d7476dc340 100644
|
||||||
|
--- a/src/import/pull-dkr.c
|
||||||
|
+++ b/src/import/pull-dkr.c
|
||||||
|
@@ -864,7 +864,7 @@ static void dkr_pull_job_on_finished_v2(PullJob *j) {
|
||||||
|
}
|
||||||
|
|
||||||
|
e = json_variant_value(doc, "fsLayers");
|
||||||
|
- if (!e || e->type != JSON_VARIANT_ARRAY) {
|
||||||
|
+ if (!e || e->type != JSON_VARIANT_ARRAY || e->size == 0) {
|
||||||
|
r = -EBADMSG;
|
||||||
|
goto finish;
|
||||||
|
}
|
162
0011-treewide-fix-typos.patch
Normal file
162
0011-treewide-fix-typos.patch
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
From 78f397aa143fed6b978e4923e443e99ab7686662 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Torstein=20Huseb=C3=B8?= <torstein@huseboe.net>
|
||||||
|
Date: Tue, 26 May 2015 19:17:30 +0200
|
||||||
|
Subject: [PATCH] treewide: fix typos
|
||||||
|
|
||||||
|
(cherry picked from commit 45afd51974fb6a88c5b1fe0b325b7b20fd7b7449)
|
||||||
|
---
|
||||||
|
NEWS | 4 ++--
|
||||||
|
man/journal-remote.conf.xml | 2 +-
|
||||||
|
src/libsystemd/sd-bus/bus-control.c | 2 +-
|
||||||
|
src/libsystemd/sd-bus/bus-creds.c | 6 +++---
|
||||||
|
src/shared/architecture.c | 2 +-
|
||||||
|
src/shared/architecture.h | 2 +-
|
||||||
|
src/shared/capability.h | 2 +-
|
||||||
|
src/shared/fdset.c | 2 +-
|
||||||
|
src/shared/util.c | 2 +-
|
||||||
|
9 files changed, 12 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index f72f502129..ee533b4363 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -3997,7 +3997,7 @@ CHANGES WITH 191:
|
||||||
|
* HandleSleepKey= in logind.conf has been split up into
|
||||||
|
HandleSuspendKey= and HandleHibernateKey=. The old setting
|
||||||
|
is not available anymore. X11 and the kernel are
|
||||||
|
- distuingishing between these keys and we should too. This
|
||||||
|
+ distinguishing between these keys and we should too. This
|
||||||
|
also means the inhibition lock for these keys has been split
|
||||||
|
into two.
|
||||||
|
|
||||||
|
@@ -4743,7 +4743,7 @@ CHANGES WITH 43:
|
||||||
|
|
||||||
|
* Various functionality updates to libsystemd-login.so
|
||||||
|
|
||||||
|
- * Track class of PAM logins to distuingish greeters from
|
||||||
|
+ * Track class of PAM logins to distinguish greeters from
|
||||||
|
normal user logins.
|
||||||
|
|
||||||
|
Contributions from: Kay Sievers, Lennart Poettering, Michael
|
||||||
|
diff --git a/man/journal-remote.conf.xml b/man/journal-remote.conf.xml
|
||||||
|
index a7b2227182..fc60258d0b 100644
|
||||||
|
--- a/man/journal-remote.conf.xml
|
||||||
|
+++ b/man/journal-remote.conf.xml
|
||||||
|
@@ -83,7 +83,7 @@
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>ServerKeyFile=</varname></term>
|
||||||
|
|
||||||
|
- <listitem><para>SSL key in PEM format</para></listitem>
|
||||||
|
+ <listitem><para>SSL key in PEM format.</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
index fa4c28174d..43ddfc651d 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
@@ -429,7 +429,7 @@ static int bus_populate_creds_from_items(
|
||||||
|
c->mask |= SD_BUS_CREDS_PPID;
|
||||||
|
} else if (item->pids.pid == 1) {
|
||||||
|
/* The structure doesn't
|
||||||
|
- * really distuingish the case
|
||||||
|
+ * really distinguish the case
|
||||||
|
* where a process has no
|
||||||
|
* parent and where we don't
|
||||||
|
* know it because it could
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c
|
||||||
|
index fed66823c7..4d67619cf8 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-creds.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-creds.c
|
||||||
|
@@ -303,7 +303,7 @@ _public_ int sd_bus_creds_get_ppid(sd_bus_creds *c, pid_t *ppid) {
|
||||||
|
if (!(c->mask & SD_BUS_CREDS_PPID))
|
||||||
|
return -ENODATA;
|
||||||
|
|
||||||
|
- /* PID 1 has no parent process. Let's distuingish the case of
|
||||||
|
+ /* PID 1 has no parent process. Let's distinguish the case of
|
||||||
|
* not knowing and not having a parent process by the returned
|
||||||
|
* error code. */
|
||||||
|
if (c->ppid == 0)
|
||||||
|
@@ -989,7 +989,7 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
|
||||||
|
if (missing & SD_BUS_CREDS_EXE) {
|
||||||
|
r = get_process_exe(pid, &c->exe);
|
||||||
|
if (r == -ESRCH) {
|
||||||
|
- /* Unfortunately we cannot really distuingish
|
||||||
|
+ /* Unfortunately we cannot really distinguish
|
||||||
|
* the case here where the process does not
|
||||||
|
* exist, and /proc/$PID/exe being unreadable
|
||||||
|
* because $PID is a kernel thread. Hence,
|
||||||
|
@@ -1101,7 +1101,7 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* In case only the exe path was to be read we cannot
|
||||||
|
- * distuingish the case where the exe path was unreadable
|
||||||
|
+ * distinguish the case where the exe path was unreadable
|
||||||
|
* because the process was a kernel thread, or when the
|
||||||
|
* process didn't exist at all. Hence, let's do a final check,
|
||||||
|
* to be sure. */
|
||||||
|
diff --git a/src/shared/architecture.c b/src/shared/architecture.c
|
||||||
|
index 884abdd3ea..8e72e7a36a 100644
|
||||||
|
--- a/src/shared/architecture.c
|
||||||
|
+++ b/src/shared/architecture.c
|
||||||
|
@@ -35,7 +35,7 @@ int uname_architecture(void) {
|
||||||
|
* 1:1. Instead we try to clean it up and break down the
|
||||||
|
* confusion on x86 and arm in particular.
|
||||||
|
*
|
||||||
|
- * We do not try to distuingish CPUs not CPU features, but
|
||||||
|
+ * We do not try to distinguish CPUs not CPU features, but
|
||||||
|
* actual architectures, i.e. that have genuinely different
|
||||||
|
* code. */
|
||||||
|
|
||||||
|
diff --git a/src/shared/architecture.h b/src/shared/architecture.h
|
||||||
|
index cb82418a5e..f5bbf65a90 100644
|
||||||
|
--- a/src/shared/architecture.h
|
||||||
|
+++ b/src/shared/architecture.h
|
||||||
|
@@ -27,7 +27,7 @@
|
||||||
|
|
||||||
|
/* A cleaned up architecture definition. We don't want to get lost in
|
||||||
|
* processor features, models, generations or even ABIs. Hence we
|
||||||
|
- * focus on general family, and distuignish word width and
|
||||||
|
+ * focus on general family, and distinguish word width and
|
||||||
|
* endianness. */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
diff --git a/src/shared/capability.h b/src/shared/capability.h
|
||||||
|
index 8260ae1a81..4eb5c2a835 100644
|
||||||
|
--- a/src/shared/capability.h
|
||||||
|
+++ b/src/shared/capability.h
|
||||||
|
@@ -31,7 +31,7 @@ int have_effective_cap(int value);
|
||||||
|
int capability_bounding_set_drop(uint64_t drop, bool right_now);
|
||||||
|
int capability_bounding_set_drop_usermode(uint64_t drop);
|
||||||
|
|
||||||
|
-int drop_privileges(uid_t uid, gid_t gid, uint64_t keep_capabilites);
|
||||||
|
+int drop_privileges(uid_t uid, gid_t gid, uint64_t keep_capabilities);
|
||||||
|
|
||||||
|
int drop_capability(cap_value_t cv);
|
||||||
|
|
||||||
|
diff --git a/src/shared/fdset.c b/src/shared/fdset.c
|
||||||
|
index 31849272bd..6101b628ec 100644
|
||||||
|
--- a/src/shared/fdset.c
|
||||||
|
+++ b/src/shared/fdset.c
|
||||||
|
@@ -32,7 +32,7 @@
|
||||||
|
#define MAKE_SET(s) ((Set*) s)
|
||||||
|
#define MAKE_FDSET(s) ((FDSet*) s)
|
||||||
|
|
||||||
|
-/* Make sure we can distuingish fd 0 and NULL */
|
||||||
|
+/* Make sure we can distinguish fd 0 and NULL */
|
||||||
|
#define FD_TO_PTR(fd) INT_TO_PTR((fd)+1)
|
||||||
|
#define PTR_TO_FD(p) (PTR_TO_INT(p)-1)
|
||||||
|
|
||||||
|
diff --git a/src/shared/util.c b/src/shared/util.c
|
||||||
|
index 34024bacc4..74a2190031 100644
|
||||||
|
--- a/src/shared/util.c
|
||||||
|
+++ b/src/shared/util.c
|
||||||
|
@@ -5887,7 +5887,7 @@ int same_fd(int a, int b) {
|
||||||
|
|
||||||
|
/* The fds refer to the same inode on disk, let's also check
|
||||||
|
* if they have the same fd flags. This is useful to
|
||||||
|
- * distuingish the read and write side of a pipe created with
|
||||||
|
+ * distinguish the read and write side of a pipe created with
|
||||||
|
* pipe(). */
|
||||||
|
fa = fcntl(a, F_GETFL);
|
||||||
|
if (fa < 0)
|
@ -0,0 +1,29 @@
|
|||||||
|
From 0569c6e3c9d19c04eb2614bd8769e5eb32764371 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Mack <daniel@zonque.org>
|
||||||
|
Date: Tue, 26 May 2015 18:56:40 +0200
|
||||||
|
Subject: [PATCH] logind: unlink /run/nologin when shutdown is cancelled
|
||||||
|
|
||||||
|
When a scheduled is cancelled, make sure to remove /run/nologin.
|
||||||
|
This is a regression from the recent shutdownd removal and logind rework.
|
||||||
|
|
||||||
|
(cherry picked from commit fb91034cf5907bbbabba1e8821b01f3b37aa56d5)
|
||||||
|
---
|
||||||
|
src/login/logind-dbus.c | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
|
||||||
|
index 1f5cf865b1..3555bcc2f5 100644
|
||||||
|
--- a/src/login/logind-dbus.c
|
||||||
|
+++ b/src/login/logind-dbus.c
|
||||||
|
@@ -1964,6 +1964,11 @@ static int method_cancel_scheduled_shutdown(sd_bus_message *message, void *userd
|
||||||
|
m->scheduled_shutdown_type = NULL;
|
||||||
|
m->scheduled_shutdown_timeout = 0;
|
||||||
|
|
||||||
|
+ if (m->unlink_nologin) {
|
||||||
|
+ unlink("/run/nologin");
|
||||||
|
+ m->unlink_nologin = false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (cancelled) {
|
||||||
|
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
|
||||||
|
const char *tty = NULL;
|
55
0013-missing-add-more-IFLA_VXLAN_-defines.patch
Normal file
55
0013-missing-add-more-IFLA_VXLAN_-defines.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
From 091acba43685c70d0a38d43167f44fe2622b3c15 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Olbrich <m.olbrich@pengutronix.de>
|
||||||
|
Date: Tue, 26 May 2015 07:48:48 +0200
|
||||||
|
Subject: [PATCH] missing: add more IFLA_VXLAN_* defines
|
||||||
|
|
||||||
|
Otherwise building faild with kernel headers < v3.16
|
||||||
|
|
||||||
|
(cherry picked from commit 583c14fc04a089e9af70a3fa0b8c0a8c27c06ec0)
|
||||||
|
---
|
||||||
|
configure.ac | 2 +-
|
||||||
|
src/shared/missing.h | 11 +++++++++--
|
||||||
|
2 files changed, 10 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 48cedb5ab6..0818dd80cf 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -334,7 +334,7 @@ AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE,
|
||||||
|
IFLA_PHYS_PORT_ID,
|
||||||
|
IFLA_BOND_AD_INFO,
|
||||||
|
IFLA_VLAN_PROTOCOL,
|
||||||
|
- IFLA_VXLAN_LOCAL6,
|
||||||
|
+ IFLA_VXLAN_REMCSUM_NOPARTIAL,
|
||||||
|
IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
|
||||||
|
IFLA_BRIDGE_VLAN_INFO,
|
||||||
|
IFLA_BRPORT_UNICAST_FLOOD,
|
||||||
|
diff --git a/src/shared/missing.h b/src/shared/missing.h
|
||||||
|
index 8ca6f8edb6..9194009491 100644
|
||||||
|
--- a/src/shared/missing.h
|
||||||
|
+++ b/src/shared/missing.h
|
||||||
|
@@ -713,7 +713,7 @@ static inline int setns(int fd, int nstype) {
|
||||||
|
#define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#if !HAVE_DECL_IFLA_VXLAN_LOCAL6
|
||||||
|
+#if !HAVE_DECL_IFLA_VXLAN_REMCSUM_NOPARTIAL
|
||||||
|
#define IFLA_VXLAN_UNSPEC 0
|
||||||
|
#define IFLA_VXLAN_ID 1
|
||||||
|
#define IFLA_VXLAN_GROUP 2
|
||||||
|
@@ -732,7 +732,14 @@ static inline int setns(int fd, int nstype) {
|
||||||
|
#define IFLA_VXLAN_PORT 15
|
||||||
|
#define IFLA_VXLAN_GROUP6 16
|
||||||
|
#define IFLA_VXLAN_LOCAL6 17
|
||||||
|
-#define __IFLA_VXLAN_MAX 18
|
||||||
|
+#define IFLA_VXLAN_UDP_CSUM 18
|
||||||
|
+#define IFLA_VXLAN_UDP_ZERO_CSUM6_TX 19
|
||||||
|
+#define IFLA_VXLAN_UDP_ZERO_CSUM6_RX 20
|
||||||
|
+#define IFLA_VXLAN_REMCSUM_TX 21
|
||||||
|
+#define IFLA_VXLAN_REMCSUM_RX 22
|
||||||
|
+#define IFLA_VXLAN_GBP 23
|
||||||
|
+#define IFLA_VXLAN_REMCSUM_NOPARTIAL 24
|
||||||
|
+#define __IFLA_VXLAN_MAX 25
|
||||||
|
|
||||||
|
#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
|
||||||
|
#endif
|
@ -1,18 +1,20 @@
|
|||||||
From 86c3bece38bcf55da6387d20c6f01da9ad0284dc Mon Sep 17 00:00:00 2001
|
From 8300a7a170f44490d4e86541fbbad2b90cd52ce0 Mon Sep 17 00:00:00 2001
|
||||||
From: Tom Gundersen <teg@jklm.no>
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
Date: Wed, 27 May 2015 18:39:36 +0200
|
Date: Wed, 27 May 2015 18:39:36 +0200
|
||||||
Subject: [PATCH] udevd: fix SIGCHLD handling in --daemon mode
|
Subject: [PATCH] udevd: fix SIGCHLD handling in --daemon mode
|
||||||
|
|
||||||
We were listening for SIGCHLD in the wrong process.
|
We were listening for SIGCHLD in the wrong process.
|
||||||
|
|
||||||
|
(cherry picked from commit 86c3bece38bcf55da6387d20c6f01da9ad0284dc)
|
||||||
---
|
---
|
||||||
src/udev/udevd.c | 33 ++++++++++++++++++++++-----------
|
src/udev/udevd.c | 33 ++++++++++++++++++++++-----------
|
||||||
1 file changed, 22 insertions(+), 11 deletions(-)
|
1 file changed, 22 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
||||||
index 87e677e..299fda8 100644
|
index 2a9a429e66..b5dadbc8e4 100644
|
||||||
--- a/src/udev/udevd.c
|
--- a/src/udev/udevd.c
|
||||||
+++ b/src/udev/udevd.c
|
+++ b/src/udev/udevd.c
|
||||||
@@ -1288,13 +1288,6 @@ static int parse_argv(int argc, char *argv[]) {
|
@@ -1289,13 +1289,6 @@ static int parse_argv(int argc, char *argv[]) {
|
||||||
|
|
||||||
static int manager_new(Manager **ret) {
|
static int manager_new(Manager **ret) {
|
||||||
_cleanup_(manager_freep) Manager *manager = NULL;
|
_cleanup_(manager_freep) Manager *manager = NULL;
|
||||||
@ -26,7 +28,7 @@ index 87e677e..299fda8 100644
|
|||||||
|
|
||||||
assert(ret);
|
assert(ret);
|
||||||
|
|
||||||
@@ -1323,6 +1316,23 @@ static int manager_new(Manager **ret) {
|
@@ -1324,6 +1317,23 @@ static int manager_new(Manager **ret) {
|
||||||
udev_list_node_init(&manager->events);
|
udev_list_node_init(&manager->events);
|
||||||
udev_list_init(manager->udev, &manager->properties, true);
|
udev_list_init(manager->udev, &manager->properties, true);
|
||||||
|
|
||||||
@ -50,7 +52,7 @@ index 87e677e..299fda8 100644
|
|||||||
r = systemd_fds(&manager->fd_ctrl, &manager->fd_uevent);
|
r = systemd_fds(&manager->fd_ctrl, &manager->fd_uevent);
|
||||||
if (r >= 0) {
|
if (r >= 0) {
|
||||||
/* get control and netlink socket from systemd */
|
/* get control and netlink socket from systemd */
|
||||||
@@ -1404,10 +1414,7 @@ static int manager_new(Manager **ret) {
|
@@ -1405,10 +1415,7 @@ static int manager_new(Manager **ret) {
|
||||||
epoll_ctl(manager->fd_ep, EPOLL_CTL_ADD, manager->fd_worker, &ep_worker) < 0)
|
epoll_ctl(manager->fd_ep, EPOLL_CTL_ADD, manager->fd_worker, &ep_worker) < 0)
|
||||||
return log_error_errno(errno, "fail to add fds to epoll: %m");
|
return log_error_errno(errno, "fail to add fds to epoll: %m");
|
||||||
|
|
||||||
@ -62,7 +64,7 @@ index 87e677e..299fda8 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
@@ -1518,6 +1525,10 @@ int main(int argc, char *argv[]) {
|
@@ -1519,6 +1526,10 @@ int main(int argc, char *argv[]) {
|
||||||
} else
|
} else
|
||||||
sd_notify(1, "READY=1");
|
sd_notify(1, "READY=1");
|
||||||
|
|
||||||
@ -73,6 +75,3 @@ index 87e677e..299fda8 100644
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
static usec_t last_usec;
|
static usec_t last_usec;
|
||||||
struct epoll_event ev[8];
|
struct epoll_event ev[8];
|
||||||
--
|
|
||||||
2.3.1
|
|
||||||
|
|
33
0015-sd-device-fix-device_get_properties_strv.patch
Normal file
33
0015-sd-device-fix-device_get_properties_strv.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
From 864dfcd49d764866a9795ea6e3f39c1f7c85b509 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
|
Date: Wed, 27 May 2015 23:26:39 +0200
|
||||||
|
Subject: [PATCH] sd-device: fix device_get_properties_strv()
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
A NULL pointer was inserted as the first element of the strv.
|
||||||
|
|
||||||
|
This had the effect of always passing the empty environment to processes
|
||||||
|
spawned by udev.
|
||||||
|
|
||||||
|
Reported by Michał Bartoszkiewicz.
|
||||||
|
|
||||||
|
(cherry picked from commit 0e3e60561395a8dd0464f9427d7fc9209bf3b007)
|
||||||
|
---
|
||||||
|
src/libsystemd/sd-device/device-private.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c
|
||||||
|
index 3cadedbf4a..10370af029 100644
|
||||||
|
--- a/src/libsystemd/sd-device/device-private.c
|
||||||
|
+++ b/src/libsystemd/sd-device/device-private.c
|
||||||
|
@@ -659,7 +659,7 @@ static int device_update_properties_bufs(sd_device *device) {
|
||||||
|
if (!buf_strv)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
- buf_strv[++ strv_size] = (char *)&buf_nulstr[nulstr_len];
|
||||||
|
+ buf_strv[strv_size ++] = (char *)&buf_nulstr[nulstr_len];
|
||||||
|
strscpyl((char *)buf_nulstr + nulstr_len, len + 1, prop, "=", val, NULL);
|
||||||
|
nulstr_len += len + 1;
|
||||||
|
}
|
23
0016-man-fix-systemd.resource-control-5-volume-number.patch
Normal file
23
0016-man-fix-systemd.resource-control-5-volume-number.patch
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
From 6ef870184fd2952802c72cf8782745fc613aa233 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Patrick Donnelly <batrick@batbytes.com>
|
||||||
|
Date: Wed, 27 May 2015 15:47:02 -0400
|
||||||
|
Subject: [PATCH] man: fix systemd.resource-control(5) volume number
|
||||||
|
|
||||||
|
(cherry picked from commit c4e87748d5d3f574d335a87e3a6272276814b2fd)
|
||||||
|
---
|
||||||
|
man/systemd.slice.xml | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/man/systemd.slice.xml b/man/systemd.slice.xml
|
||||||
|
index f0bac41763..a501327335 100644
|
||||||
|
--- a/man/systemd.slice.xml
|
||||||
|
+++ b/man/systemd.slice.xml
|
||||||
|
@@ -90,7 +90,7 @@
|
||||||
|
slice specific configuration options are configured in
|
||||||
|
the [Slice] section. Currently, only generic resource control settings
|
||||||
|
as described in
|
||||||
|
- <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>7</manvolnum></citerefentry> are allowed.
|
||||||
|
+ <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry> are allowed.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>Unless <varname>DefaultDependencies=false</varname>
|
@ -0,0 +1,44 @@
|
|||||||
|
From be215abe14beac522e326be14ba44fcf989e4359 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
|
Date: Thu, 28 May 2015 17:18:33 +0200
|
||||||
|
Subject: [PATCH] sd-device: enumerator - fix matching on properties and
|
||||||
|
sysattrs
|
||||||
|
|
||||||
|
This was a regression that broke
|
||||||
|
|
||||||
|
$ udevadm trigger -nv --property-match=DEVNAME=/dev/sda1 --attr-match=size=409600
|
||||||
|
|
||||||
|
Reported by David Reisner.
|
||||||
|
|
||||||
|
(cherry picked from commit 5f529f4c97a141457301477505ae7eb4c28cf610)
|
||||||
|
---
|
||||||
|
src/libsystemd/sd-device/device-enumerator.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c
|
||||||
|
index ce4862d7f0..3692d46e06 100644
|
||||||
|
--- a/src/libsystemd/sd-device/device-enumerator.c
|
||||||
|
+++ b/src/libsystemd/sd-device/device-enumerator.c
|
||||||
|
@@ -367,11 +367,11 @@ static bool match_sysattr(sd_device_enumerator *enumerator, sd_device *device) {
|
||||||
|
assert(enumerator);
|
||||||
|
assert(device);
|
||||||
|
|
||||||
|
- HASHMAP_FOREACH_KEY(sysattr, value, enumerator->nomatch_sysattr, i)
|
||||||
|
+ HASHMAP_FOREACH_KEY(value, sysattr, enumerator->nomatch_sysattr, i)
|
||||||
|
if (match_sysattr_value(device, sysattr, value))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
- HASHMAP_FOREACH_KEY(sysattr, value, enumerator->match_sysattr, i)
|
||||||
|
+ HASHMAP_FOREACH_KEY(value, sysattr, enumerator->match_sysattr, i)
|
||||||
|
if (!match_sysattr_value(device, sysattr, value))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
@@ -389,7 +389,7 @@ static bool match_property(sd_device_enumerator *enumerator, sd_device *device)
|
||||||
|
if (hashmap_isempty(enumerator->match_property))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
- HASHMAP_FOREACH_KEY(property, value, enumerator->match_property, i) {
|
||||||
|
+ HASHMAP_FOREACH_KEY(value, property, enumerator->match_property, i) {
|
||||||
|
const char *property_dev, *value_dev;
|
||||||
|
|
||||||
|
FOREACH_DEVICE_PROPERTY(device, property_dev, value_dev) {
|
27
0018-build-sys-fix-typo.patch
Normal file
27
0018-build-sys-fix-typo.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
From bb3f5d2012812ff6ce56ca3139e17c488b7ca30b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Karel Zak <kzak@redhat.com>
|
||||||
|
Date: Fri, 29 May 2015 13:42:35 +0200
|
||||||
|
Subject: [PATCH] build-sys: fix typo
|
||||||
|
|
||||||
|
There is nothing like systemd_verify_* in Makefile.am. The bug has
|
||||||
|
been invisible because automake uses the default CFLAGS when component
|
||||||
|
CFLAGS are undefined.
|
||||||
|
|
||||||
|
(cherry picked from commit 144b1b4b34b6ae20a690e31c3d14dbb96341448b)
|
||||||
|
---
|
||||||
|
Makefile.am | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index dd1e9e4e48..5310a30284 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -2132,7 +2132,7 @@ systemd_analyze_SOURCES = \
|
||||||
|
src/analyze/analyze-verify.c \
|
||||||
|
src/analyze/analyze-verify.h
|
||||||
|
|
||||||
|
-systemd_verify_CFLAGS = \
|
||||||
|
+systemd_analyze_CFLAGS = \
|
||||||
|
$(AM_CFLAGS) \
|
||||||
|
$(SECCOMP_CFLAGS)
|
||||||
|
|
270
0019-path-util-Fix-path_is_mount_point-for-files.patch
Normal file
270
0019-path-util-Fix-path_is_mount_point-for-files.patch
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
From 117a45829a6be1ef728616c3c90fc8c6f9eda318 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Pitt <martin.pitt@ubuntu.com>
|
||||||
|
Date: Wed, 27 May 2015 09:56:03 +0200
|
||||||
|
Subject: [PATCH] path-util: Fix path_is_mount_point for files
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Commits 27cc6f166 and f25afeb broke path_is_mount_point() for files (such as
|
||||||
|
/etc/machine-id → /run/machine-id bind mounts) as with the factorization of
|
||||||
|
fd_is_mount_point() we lost the parent directory. We cannot determine that from
|
||||||
|
an fd only as openat(fd, "..") only works for directory fds.
|
||||||
|
|
||||||
|
Change fd_is_mount_point() to behave like openat(): It now takes a file
|
||||||
|
descriptor of the containing directory, a file name in it, and flags (which can
|
||||||
|
be 0 or AT_SYMLINK_FOLLOW). Unlike name_to_handle_at() or openat(), fstatat()
|
||||||
|
only accepts the inverse flag AT_SYMLINK_NOFOLLOW and complains with EINVAL
|
||||||
|
about AT_SYMLINK_FOLLOW; so we need to transform the flags for that fallback.
|
||||||
|
|
||||||
|
Adjust rm_rf_children() accordingly (only other caller of fd_is_mount_point()
|
||||||
|
aside from path_is_mount_point()).
|
||||||
|
|
||||||
|
Add test cases for files, links, and file bind mounts (the latter will only
|
||||||
|
work when running as root). Split out a new test_path_is_mount_point() test
|
||||||
|
case function as it got significantly larger now.
|
||||||
|
|
||||||
|
(cherry picked from commit 5d409034017e9f9f8c4392157d95511fc2e05d87)
|
||||||
|
---
|
||||||
|
src/shared/path-util.c | 31 +++++++++++++------
|
||||||
|
src/shared/path-util.h | 2 +-
|
||||||
|
src/shared/rm-rf.c | 2 +-
|
||||||
|
src/test/test-path-util.c | 76 +++++++++++++++++++++++++++++++++++++++--------
|
||||||
|
4 files changed, 87 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/shared/path-util.c b/src/shared/path-util.c
|
||||||
|
index 7090989fcb..8be479cd7f 100644
|
||||||
|
--- a/src/shared/path-util.c
|
||||||
|
+++ b/src/shared/path-util.c
|
||||||
|
@@ -509,7 +509,7 @@ static int fd_fdinfo_mnt_id(int fd, const char *filename, int flags, int *mnt_id
|
||||||
|
return safe_atoi(p, mnt_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
-int fd_is_mount_point(int fd) {
|
||||||
|
+int fd_is_mount_point(int fd, const char *filename, int flags) {
|
||||||
|
union file_handle_union h = FILE_HANDLE_INIT, h_parent = FILE_HANDLE_INIT;
|
||||||
|
int mount_id = -1, mount_id_parent = -1;
|
||||||
|
bool nosupp = false, check_st_dev = true;
|
||||||
|
@@ -517,6 +517,7 @@ int fd_is_mount_point(int fd) {
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert(fd >= 0);
|
||||||
|
+ assert(filename);
|
||||||
|
|
||||||
|
/* First we will try the name_to_handle_at() syscall, which
|
||||||
|
* tells us the mount id and an opaque file "handle". It is
|
||||||
|
@@ -541,7 +542,7 @@ int fd_is_mount_point(int fd) {
|
||||||
|
* subvolumes have different st_dev, even though they aren't
|
||||||
|
* real mounts of their own. */
|
||||||
|
|
||||||
|
- r = name_to_handle_at(fd, "", &h.handle, &mount_id, AT_EMPTY_PATH);
|
||||||
|
+ r = name_to_handle_at(fd, filename, &h.handle, &mount_id, flags);
|
||||||
|
if (r < 0) {
|
||||||
|
if (errno == ENOSYS)
|
||||||
|
/* This kernel does not support name_to_handle_at()
|
||||||
|
@@ -558,7 +559,7 @@ int fd_is_mount_point(int fd) {
|
||||||
|
return -errno;
|
||||||
|
}
|
||||||
|
|
||||||
|
- r = name_to_handle_at(fd, "..", &h_parent.handle, &mount_id_parent, 0);
|
||||||
|
+ r = name_to_handle_at(fd, "", &h_parent.handle, &mount_id_parent, AT_EMPTY_PATH);
|
||||||
|
if (r < 0) {
|
||||||
|
if (errno == EOPNOTSUPP) {
|
||||||
|
if (nosupp)
|
||||||
|
@@ -593,13 +594,13 @@ int fd_is_mount_point(int fd) {
|
||||||
|
return mount_id != mount_id_parent;
|
||||||
|
|
||||||
|
fallback_fdinfo:
|
||||||
|
- r = fd_fdinfo_mnt_id(fd, "", AT_EMPTY_PATH, &mount_id);
|
||||||
|
+ r = fd_fdinfo_mnt_id(fd, filename, flags, &mount_id);
|
||||||
|
if (r == -EOPNOTSUPP)
|
||||||
|
goto fallback_fstat;
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
- r = fd_fdinfo_mnt_id(fd, "..", 0, &mount_id_parent);
|
||||||
|
+ r = fd_fdinfo_mnt_id(fd, "", AT_EMPTY_PATH, &mount_id_parent);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
@@ -615,10 +616,16 @@ fallback_fdinfo:
|
||||||
|
check_st_dev = false;
|
||||||
|
|
||||||
|
fallback_fstat:
|
||||||
|
- if (fstatat(fd, "", &a, AT_EMPTY_PATH) < 0)
|
||||||
|
+ /* yay for fstatat() taking a different set of flags than the other
|
||||||
|
+ * _at() above */
|
||||||
|
+ if (flags & AT_SYMLINK_FOLLOW)
|
||||||
|
+ flags &= ~AT_SYMLINK_FOLLOW;
|
||||||
|
+ else
|
||||||
|
+ flags |= AT_SYMLINK_NOFOLLOW;
|
||||||
|
+ if (fstatat(fd, filename, &a, flags) < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
- if (fstatat(fd, "..", &b, 0) < 0)
|
||||||
|
+ if (fstatat(fd, "", &b, AT_EMPTY_PATH) < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
/* A directory with same device and inode as its parent? Must
|
||||||
|
@@ -632,17 +639,23 @@ fallback_fstat:
|
||||||
|
|
||||||
|
int path_is_mount_point(const char *t, bool allow_symlink) {
|
||||||
|
_cleanup_close_ int fd = -1;
|
||||||
|
+ _cleanup_free_ char *parent = NULL;
|
||||||
|
+ int r;
|
||||||
|
|
||||||
|
assert(t);
|
||||||
|
|
||||||
|
if (path_equal(t, "/"))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
- fd = openat(AT_FDCWD, t, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|(allow_symlink ? 0 : O_PATH));
|
||||||
|
+ r = path_get_parent(t, &parent);
|
||||||
|
+ if (r < 0)
|
||||||
|
+ return r;
|
||||||
|
+
|
||||||
|
+ fd = openat(AT_FDCWD, parent, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_PATH);
|
||||||
|
if (fd < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
- return fd_is_mount_point(fd);
|
||||||
|
+ return fd_is_mount_point(fd, basename(t), (allow_symlink ? AT_SYMLINK_FOLLOW : 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
int path_is_read_only_fs(const char *path) {
|
||||||
|
diff --git a/src/shared/path-util.h b/src/shared/path-util.h
|
||||||
|
index 4f45cfd2b7..38ad799ba0 100644
|
||||||
|
--- a/src/shared/path-util.h
|
||||||
|
+++ b/src/shared/path-util.h
|
||||||
|
@@ -53,7 +53,7 @@ char** path_strv_make_absolute_cwd(char **l);
|
||||||
|
char** path_strv_resolve(char **l, const char *prefix);
|
||||||
|
char** path_strv_resolve_uniq(char **l, const char *prefix);
|
||||||
|
|
||||||
|
-int fd_is_mount_point(int fd);
|
||||||
|
+int fd_is_mount_point(int fd, const char *filename, int flags);
|
||||||
|
int path_is_mount_point(const char *path, bool allow_symlink);
|
||||||
|
int path_is_read_only_fs(const char *path);
|
||||||
|
int path_is_os_tree(const char *path);
|
||||||
|
diff --git a/src/shared/rm-rf.c b/src/shared/rm-rf.c
|
||||||
|
index a89e8afc2a..bafd483be2 100644
|
||||||
|
--- a/src/shared/rm-rf.c
|
||||||
|
+++ b/src/shared/rm-rf.c
|
||||||
|
@@ -103,7 +103,7 @@ int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stop at mount points */
|
||||||
|
- r = fd_is_mount_point(subdir_fd);
|
||||||
|
+ r = fd_is_mount_point(fd, de->d_name, 0);
|
||||||
|
if (r < 0) {
|
||||||
|
if (ret == 0 && r != -ENOENT)
|
||||||
|
ret = r;
|
||||||
|
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
|
||||||
|
index 09f0f2f89e..80782ff902 100644
|
||||||
|
--- a/src/test/test-path-util.c
|
||||||
|
+++ b/src/test/test-path-util.c
|
||||||
|
@@ -21,6 +21,7 @@
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
+#include <sys/mount.h>
|
||||||
|
|
||||||
|
#include "path-util.h"
|
||||||
|
#include "util.h"
|
||||||
|
@@ -88,21 +89,9 @@ static void test_path(void) {
|
||||||
|
test_parent("/aa///file...", "/aa///");
|
||||||
|
test_parent("file.../", NULL);
|
||||||
|
|
||||||
|
- assert_se(path_is_mount_point("/", true) > 0);
|
||||||
|
- assert_se(path_is_mount_point("/", false) > 0);
|
||||||
|
-
|
||||||
|
fd = open("/", O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY);
|
||||||
|
assert_se(fd >= 0);
|
||||||
|
- assert_se(fd_is_mount_point(fd) > 0);
|
||||||
|
-
|
||||||
|
- assert_se(path_is_mount_point("/proc", true) > 0);
|
||||||
|
- assert_se(path_is_mount_point("/proc", false) > 0);
|
||||||
|
-
|
||||||
|
- assert_se(path_is_mount_point("/proc/1", true) == 0);
|
||||||
|
- assert_se(path_is_mount_point("/proc/1", false) == 0);
|
||||||
|
-
|
||||||
|
- assert_se(path_is_mount_point("/sys", true) > 0);
|
||||||
|
- assert_se(path_is_mount_point("/sys", false) > 0);
|
||||||
|
+ assert_se(fd_is_mount_point(fd, "/", 0) > 0);
|
||||||
|
|
||||||
|
{
|
||||||
|
char p1[] = "aaa/bbb////ccc";
|
||||||
|
@@ -322,6 +311,66 @@ static void test_prefix_root(void) {
|
||||||
|
test_prefix_root_one("/foo///", "//bar", "/foo/bar");
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void test_path_is_mount_point(void) {
|
||||||
|
+ int fd, rt, rf, rlt, rlf;
|
||||||
|
+ char tmp_dir[] = "/tmp/test-path-is-mount-point-XXXXXX";
|
||||||
|
+ _cleanup_free_ char *file1 = NULL, *file2 = NULL, *link1 = NULL, *link2 = NULL;
|
||||||
|
+
|
||||||
|
+ assert_se(path_is_mount_point("/", true) > 0);
|
||||||
|
+ assert_se(path_is_mount_point("/", false) > 0);
|
||||||
|
+
|
||||||
|
+ assert_se(path_is_mount_point("/proc", true) > 0);
|
||||||
|
+ assert_se(path_is_mount_point("/proc", false) > 0);
|
||||||
|
+
|
||||||
|
+ assert_se(path_is_mount_point("/proc/1", true) == 0);
|
||||||
|
+ assert_se(path_is_mount_point("/proc/1", false) == 0);
|
||||||
|
+
|
||||||
|
+ assert_se(path_is_mount_point("/sys", true) > 0);
|
||||||
|
+ assert_se(path_is_mount_point("/sys", false) > 0);
|
||||||
|
+
|
||||||
|
+ /* file mountpoints */
|
||||||
|
+ assert_se(mkdtemp(tmp_dir) != NULL);
|
||||||
|
+ file1 = path_join(NULL, tmp_dir, "file1");
|
||||||
|
+ assert_se(file1);
|
||||||
|
+ file2 = path_join(NULL, tmp_dir, "file2");
|
||||||
|
+ assert_se(file2);
|
||||||
|
+ fd = open(file1, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0664);
|
||||||
|
+ assert_se(fd > 0);
|
||||||
|
+ close(fd);
|
||||||
|
+ fd = open(file2, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0664);
|
||||||
|
+ assert_se(fd > 0);
|
||||||
|
+ close(fd);
|
||||||
|
+ link1 = path_join(NULL, tmp_dir, "link1");
|
||||||
|
+ assert_se(link1);
|
||||||
|
+ assert_se(symlink("file1", link1) == 0);
|
||||||
|
+ link2 = path_join(NULL, tmp_dir, "link2");
|
||||||
|
+ assert_se(link1);
|
||||||
|
+ assert_se(symlink("file2", link2) == 0);
|
||||||
|
+
|
||||||
|
+ assert_se(path_is_mount_point(file1, true) == 0);
|
||||||
|
+ assert_se(path_is_mount_point(file1, false) == 0);
|
||||||
|
+ assert_se(path_is_mount_point(link1, true) == 0);
|
||||||
|
+ assert_se(path_is_mount_point(link1, false) == 0);
|
||||||
|
+
|
||||||
|
+ /* this test will only work as root */
|
||||||
|
+ if (mount(file1, file2, NULL, MS_BIND, NULL) >= 0) {
|
||||||
|
+ rf = path_is_mount_point(file2, false);
|
||||||
|
+ rt = path_is_mount_point(file2, true);
|
||||||
|
+ rlf = path_is_mount_point(link2, false);
|
||||||
|
+ rlt = path_is_mount_point(link2, true);
|
||||||
|
+
|
||||||
|
+ assert_se(umount(file2) == 0);
|
||||||
|
+
|
||||||
|
+ assert_se(rf == 1);
|
||||||
|
+ assert_se(rt == 1);
|
||||||
|
+ assert_se(rlf == 0);
|
||||||
|
+ assert_se(rlt == 1);
|
||||||
|
+ } else
|
||||||
|
+ printf("Skipping bind mount file test: %m\n");
|
||||||
|
+
|
||||||
|
+ assert_se(rm_rf(tmp_dir, REMOVE_ROOT|REMOVE_PHYSICAL) == 0);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
test_path();
|
||||||
|
test_find_binary(argv[0], true);
|
||||||
|
@@ -333,6 +382,7 @@ int main(int argc, char **argv) {
|
||||||
|
test_strv_resolve();
|
||||||
|
test_path_startswith();
|
||||||
|
test_prefix_root();
|
||||||
|
+ test_path_is_mount_point();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -1,16 +1,18 @@
|
|||||||
From 10c7cf9e109f6b59159e439774b5be5fd1faa24e Mon Sep 17 00:00:00 2001
|
From 4fa8d70f0e914346c2a46c05bbb356eaae7d527c Mon Sep 17 00:00:00 2001
|
||||||
From: Tom Gundersen <teg@jklm.no>
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
Date: Fri, 29 May 2015 19:59:24 +0200
|
Date: Fri, 29 May 2015 19:59:24 +0200
|
||||||
Subject: [PATCH] rules: fix typo in block watch rule
|
Subject: [PATCH] rules: fix typo in block watch rule
|
||||||
|
|
||||||
The intention was to turn this rule from using a blacklist to a whitelist, but
|
The intention was to turn this rule from using a blacklist to a whitelist, but
|
||||||
there was a stray '!'.
|
there was a stray '!'.
|
||||||
|
|
||||||
|
(cherry picked from commit f07689517e3715d03590e779841647aed0cd2ba7)
|
||||||
---
|
---
|
||||||
rules/60-block.rules | 2 +-
|
rules/60-block.rules | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/rules/60-block.rules b/rules/60-block.rules
|
diff --git a/rules/60-block.rules b/rules/60-block.rules
|
||||||
index de41499..cfd5010 100644
|
index de41499cb7..cfd5010bbd 100644
|
||||||
--- a/rules/60-block.rules
|
--- a/rules/60-block.rules
|
||||||
+++ b/rules/60-block.rules
|
+++ b/rules/60-block.rules
|
||||||
@@ -8,4 +8,4 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_
|
@@ -8,4 +8,4 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_
|
@ -1,16 +1,18 @@
|
|||||||
From 7a41b5a87167c3628d702d5f9db0cba1df4eff2c Mon Sep 17 00:00:00 2001
|
From d854d0f65a7fa84bed1703a36a7f15aff40aa6ca Mon Sep 17 00:00:00 2001
|
||||||
From: Tom Gundersen <teg@jklm.no>
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
Date: Fri, 29 May 2015 20:55:39 +0200
|
Date: Fri, 29 May 2015 20:55:39 +0200
|
||||||
Subject: [PATCH] rules: restore block watch after CHANGE events
|
Subject: [PATCH] rules: restore block watch after CHANGE events
|
||||||
|
|
||||||
When processing an event, the watch is disabled, make sure it is restorted after
|
When processing an event, the watch is disabled, make sure it is restorted after
|
||||||
a CHANGE event has been processed.
|
a CHANGE event has been processed.
|
||||||
|
|
||||||
|
(cherry picked from commit b50063512d4be4d29e0ca5d28f66bc1121861e3b)
|
||||||
---
|
---
|
||||||
rules/60-block.rules | 2 +-
|
rules/60-block.rules | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/rules/60-block.rules b/rules/60-block.rules
|
diff --git a/rules/60-block.rules b/rules/60-block.rules
|
||||||
index cfd5010..a69d648 100644
|
index cfd5010bbd..a69d648023 100644
|
||||||
--- a/rules/60-block.rules
|
--- a/rules/60-block.rules
|
||||||
+++ b/rules/60-block.rules
|
+++ b/rules/60-block.rules
|
||||||
@@ -8,4 +8,4 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_
|
@@ -8,4 +8,4 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_
|
33
0022-zsh-completion-update-bootctl.patch
Normal file
33
0022-zsh-completion-update-bootctl.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
From 4ee8c1c46cdb745db3e62dfc8e945dc73427ba04 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ronny Chevalier <chevalier.ronny@gmail.com>
|
||||||
|
Date: Sun, 24 May 2015 13:25:52 +0200
|
||||||
|
Subject: [PATCH] zsh-completion: update bootctl
|
||||||
|
|
||||||
|
(cherry picked from commit da090dfd0b6a86694084ebc27645ead3f25ef0b6)
|
||||||
|
---
|
||||||
|
shell-completion/zsh/_bootctl | 7 ++++++-
|
||||||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/shell-completion/zsh/_bootctl b/shell-completion/zsh/_bootctl
|
||||||
|
index 7d2453cc2c..ce776c052f 100644
|
||||||
|
--- a/shell-completion/zsh/_bootctl
|
||||||
|
+++ b/shell-completion/zsh/_bootctl
|
||||||
|
@@ -4,7 +4,10 @@
|
||||||
|
{
|
||||||
|
local -a _bootctl_cmds
|
||||||
|
_bootctl_cmds=(
|
||||||
|
- "status:Show current firmware and boot settings"
|
||||||
|
+ "status:Show status of installed systemd-boot and EFI variables"
|
||||||
|
+ "instal:Install systemd-boot to the ESP and EFI variables"
|
||||||
|
+ "update:Update systemd-boot in the ESP and EFI variables"
|
||||||
|
+ "remove:Remove systemd-boot from the ESP and EFI variables"
|
||||||
|
)
|
||||||
|
if (( CURRENT == 1 )); then
|
||||||
|
_describe -t commands 'bootctl command' _bootctl_cmds || compadd "$@"
|
||||||
|
@@ -22,4 +25,6 @@
|
||||||
|
_arguments \
|
||||||
|
{-h,--help}'[Prints a short help text and exits.]' \
|
||||||
|
'--version[Prints a short version string and exits.]' \
|
||||||
|
+ '--path=[Path to the EFI System Partition (ESP)]:path:_directories' \
|
||||||
|
+ '--no-variables[Do not touch EFI variables]' \
|
||||||
|
'*::bootctl command:_bootctl_command'
|
23
0023-README-fix-typo.patch
Normal file
23
0023-README-fix-typo.patch
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
From ed341dc136505c1919d34d2ef24d48370c2d3368 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ronny Chevalier <chevalier.ronny@gmail.com>
|
||||||
|
Date: Sat, 30 May 2015 10:31:41 +0200
|
||||||
|
Subject: [PATCH] README: fix typo
|
||||||
|
|
||||||
|
(cherry picked from commit 8f42ccd24ba3cbdb994094df4aac69a00c3c7367)
|
||||||
|
---
|
||||||
|
README | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/README b/README
|
||||||
|
index 039110e880..b909b434db 100644
|
||||||
|
--- a/README
|
||||||
|
+++ b/README
|
||||||
|
@@ -239,7 +239,7 @@ WARNINGS:
|
||||||
|
supported anymore by the basic set of Linux OS components.
|
||||||
|
|
||||||
|
systemd requires that the /run mount point exists. systemd also
|
||||||
|
- requires that /var/run is a a symlink to /run.
|
||||||
|
+ requires that /var/run is a symlink to /run.
|
||||||
|
|
||||||
|
For more information on this issue consult
|
||||||
|
http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
|
27
0024-networkctl-fix-uninitialized-variable.patch
Normal file
27
0024-networkctl-fix-uninitialized-variable.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
From fb9a5b5144ab5654197cd9dab7a339976f10450b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ronny Chevalier <chevalier.ronny@gmail.com>
|
||||||
|
Date: Sat, 30 May 2015 10:51:41 +0200
|
||||||
|
Subject: [PATCH] networkctl: fix uninitialized variable
|
||||||
|
|
||||||
|
We ignore the return value of sd_device_get_devtype, then devtype could
|
||||||
|
be uninitialized when used with streq_ptr. So we need to initialize it
|
||||||
|
first.
|
||||||
|
|
||||||
|
(cherry picked from commit 732b7f39a2b3b1a2af90102c6262186ae71197ac)
|
||||||
|
---
|
||||||
|
src/network/networkctl.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
|
||||||
|
index 69b4ab4a5c..3454394977 100644
|
||||||
|
--- a/src/network/networkctl.c
|
||||||
|
+++ b/src/network/networkctl.c
|
||||||
|
@@ -62,7 +62,7 @@ static int link_get_type_string(int iftype, sd_device *d, char **ret) {
|
||||||
|
assert(ret);
|
||||||
|
|
||||||
|
if (iftype == ARPHRD_ETHER && d) {
|
||||||
|
- const char *devtype, *id = NULL;
|
||||||
|
+ const char *devtype = NULL, *id = NULL;
|
||||||
|
/* WLANs have iftype ARPHRD_ETHER, but we want
|
||||||
|
* to show a more useful type string for
|
||||||
|
* them */
|
@ -0,0 +1,30 @@
|
|||||||
|
From 4cdc2411e6d31879ac3409ccd8cdd5eebee9ed35 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ronny Chevalier <chevalier.ronny@gmail.com>
|
||||||
|
Date: Sat, 30 May 2015 12:21:26 +0200
|
||||||
|
Subject: [PATCH] conf-parser: parsing error logs should show a type not a
|
||||||
|
vartype
|
||||||
|
|
||||||
|
Instead of this:
|
||||||
|
[filename:1] Failed to parse nsec_t value, ignoring: garbage
|
||||||
|
|
||||||
|
we show this:
|
||||||
|
[filename:1] Failed to parse nsec value, ignoring: garbage
|
||||||
|
|
||||||
|
(cherry picked from commit 98d75800461c091e95398936ceb1efc2d5a3f699)
|
||||||
|
---
|
||||||
|
src/shared/conf-parser.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
|
||||||
|
index 2c855157a9..7370c786f9 100644
|
||||||
|
--- a/src/shared/conf-parser.c
|
||||||
|
+++ b/src/shared/conf-parser.c
|
||||||
|
@@ -444,7 +444,7 @@ int config_parse_many(const char *conf_file,
|
||||||
|
if (r < 0) \
|
||||||
|
log_syntax(unit, LOG_ERR, filename, line, -r, \
|
||||||
|
"Failed to parse %s value, ignoring: %s", \
|
||||||
|
- #vartype, rvalue); \
|
||||||
|
+ #type, rvalue); \
|
||||||
|
\
|
||||||
|
return 0; \
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
From 33d3e88a8015c16b0d8c908b094c0fbc4dfcf2bb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jason Pleau <jason@jpleau.ca>
|
||||||
|
Date: Sun, 31 May 2015 12:51:17 -0400
|
||||||
|
Subject: [PATCH] core/namespace: Protect /usr instead of /home with
|
||||||
|
ProtectSystem=yes
|
||||||
|
|
||||||
|
A small typo in ee818b8 caused /home to be put in read-only instead of
|
||||||
|
/usr when ProtectSystem was enabled (ie: not set to "no").
|
||||||
|
|
||||||
|
(cherry picked from commit d38e01dc96c5cae1986561c4f3bc7f760560bf2a)
|
||||||
|
---
|
||||||
|
src/core/namespace.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/core/namespace.c b/src/core/namespace.c
|
||||||
|
index 7d0b7e7e84..01a817bf23 100644
|
||||||
|
--- a/src/core/namespace.c
|
||||||
|
+++ b/src/core/namespace.c
|
||||||
|
@@ -499,7 +499,7 @@ int setup_namespace(
|
||||||
|
if (protect_system != PROTECT_SYSTEM_NO) {
|
||||||
|
const char *usr_dir, *boot_dir, *etc_dir;
|
||||||
|
|
||||||
|
- usr_dir = prefix_roota(root_directory, "/home");
|
||||||
|
+ usr_dir = prefix_roota(root_directory, "/usr");
|
||||||
|
boot_dir = prefix_roota(root_directory, "/boot");
|
||||||
|
boot_dir = strjoina("-", boot_dir);
|
||||||
|
etc_dir = prefix_roota(root_directory, "/etc");
|
@ -0,0 +1,24 @@
|
|||||||
|
From 73f05f079d5e319e8296683399a2548a37dadc5a Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Mohr <david@mcbf.net>
|
||||||
|
Date: Mon, 1 Jun 2015 08:10:28 +0200
|
||||||
|
Subject: [PATCH] udev: Bring back persistant storage symlinks for bcache
|
||||||
|
|
||||||
|
https://bugs.debian.org/787367
|
||||||
|
(cherry picked from commit 19672f1e5fd23ec3ea5b93b8268ae07f2b8e9645)
|
||||||
|
---
|
||||||
|
rules/60-persistent-storage.rules | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
|
||||||
|
index 3f803ceb9a..2aa15f3411 100644
|
||||||
|
--- a/rules/60-persistent-storage.rules
|
||||||
|
+++ b/rules/60-persistent-storage.rules
|
||||||
|
@@ -6,7 +6,7 @@
|
||||||
|
ACTION=="remove", GOTO="persistent_storage_end"
|
||||||
|
|
||||||
|
SUBSYSTEM!="block", GOTO="persistent_storage_end"
|
||||||
|
-KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*", GOTO="persistent_storage_end"
|
||||||
|
+KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|bcache*", GOTO="persistent_storage_end"
|
||||||
|
|
||||||
|
# ignore partitions that span the entire disk
|
||||||
|
TEST=="whole_disk", GOTO="persistent_storage_end"
|
71
0028-sd-device-fix-invalid-property-strv-pointers.patch
Normal file
71
0028-sd-device-fix-invalid-property-strv-pointers.patch
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
From d6e771a1936f54ff1693d84625de57b199bd6c6f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Pitt <martin.pitt@ubuntu.com>
|
||||||
|
Date: Mon, 1 Jun 2015 11:32:39 +0200
|
||||||
|
Subject: [PATCH] sd-device: fix invalid property strv pointers
|
||||||
|
|
||||||
|
In device_update_properties_bufs(), the strv is built from pointers into the
|
||||||
|
single nul-terminated buf_nulstr string, to avoid allocating the key=value
|
||||||
|
strings twice. However, we must not do that while building and
|
||||||
|
GREEDY_REALLOC0()'ing buf_nulstr, as each time when this actually reallocates
|
||||||
|
memory the pointers we wrote into buf_strv so far become invalid.
|
||||||
|
|
||||||
|
So change the logic to first completely build the new buf_nulstr, and then
|
||||||
|
iterate over it to pick out the pointers to the individual key=value strings
|
||||||
|
for properties_strv.
|
||||||
|
|
||||||
|
This fixes invalid environment for udev callouts.
|
||||||
|
|
||||||
|
(cherry picked from commit d854ba50a82f28b776c670d27156f0e9881fde8a)
|
||||||
|
---
|
||||||
|
src/libsystemd/sd-device/device-private.c | 23 +++++++++++++----------
|
||||||
|
1 file changed, 13 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c
|
||||||
|
index 10370af029..deb8efd05d 100644
|
||||||
|
--- a/src/libsystemd/sd-device/device-private.c
|
||||||
|
+++ b/src/libsystemd/sd-device/device-private.c
|
||||||
|
@@ -636,10 +636,9 @@ int device_new_from_nulstr(sd_device **ret, uint8_t *nulstr, size_t len) {
|
||||||
|
|
||||||
|
static int device_update_properties_bufs(sd_device *device) {
|
||||||
|
const char *val, *prop;
|
||||||
|
- char **buf_strv = NULL;
|
||||||
|
uint8_t *buf_nulstr = NULL;
|
||||||
|
- size_t allocated_nulstr = 0, allocated_strv = 0;
|
||||||
|
- size_t nulstr_len = 0, strv_size = 0;
|
||||||
|
+ size_t allocated_nulstr = 0;
|
||||||
|
+ size_t nulstr_len = 0, num = 0, i;
|
||||||
|
|
||||||
|
assert(device);
|
||||||
|
|
||||||
|
@@ -655,20 +654,24 @@ static int device_update_properties_bufs(sd_device *device) {
|
||||||
|
if (!buf_nulstr)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
- buf_strv = GREEDY_REALLOC0(buf_strv, allocated_strv, strv_size + 2);
|
||||||
|
- if (!buf_strv)
|
||||||
|
- return -ENOMEM;
|
||||||
|
-
|
||||||
|
- buf_strv[strv_size ++] = (char *)&buf_nulstr[nulstr_len];
|
||||||
|
strscpyl((char *)buf_nulstr + nulstr_len, len + 1, prop, "=", val, NULL);
|
||||||
|
nulstr_len += len + 1;
|
||||||
|
+ ++num;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(device->properties_nulstr);
|
||||||
|
- free(device->properties_strv);
|
||||||
|
device->properties_nulstr = buf_nulstr;
|
||||||
|
device->properties_nulstr_len = nulstr_len;
|
||||||
|
- device->properties_strv = buf_strv;
|
||||||
|
+
|
||||||
|
+ /* build strv from buf_nulstr */
|
||||||
|
+ free(device->properties_strv);
|
||||||
|
+ device->properties_strv = new0(char *, num + 1);
|
||||||
|
+ i = 0;
|
||||||
|
+ NULSTR_FOREACH(val, (char*) buf_nulstr) {
|
||||||
|
+ device->properties_strv[i] = (char *) val;
|
||||||
|
+ assert(i < num);
|
||||||
|
+ i++;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
device->properties_buf_outdated = false;
|
||||||
|
|
25
0029-zsh-completion-fix-typo-in-_bootctl.patch
Normal file
25
0029-zsh-completion-fix-typo-in-_bootctl.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 3010a30dcc0ac493fcfe485a8ad1ff483fa0a01d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Mack <daniel@zonque.org>
|
||||||
|
Date: Mon, 1 Jun 2015 12:06:07 +0200
|
||||||
|
Subject: [PATCH] zsh-completion: fix typo in _bootctl
|
||||||
|
|
||||||
|
The command is 'install', not 'instal'. Fix that typo.
|
||||||
|
|
||||||
|
(cherry picked from commit c521a430fd6027d55f96516bc2f7570f5997e137)
|
||||||
|
---
|
||||||
|
shell-completion/zsh/_bootctl | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/shell-completion/zsh/_bootctl b/shell-completion/zsh/_bootctl
|
||||||
|
index ce776c052f..0e1b0a5562 100644
|
||||||
|
--- a/shell-completion/zsh/_bootctl
|
||||||
|
+++ b/shell-completion/zsh/_bootctl
|
||||||
|
@@ -5,7 +5,7 @@
|
||||||
|
local -a _bootctl_cmds
|
||||||
|
_bootctl_cmds=(
|
||||||
|
"status:Show status of installed systemd-boot and EFI variables"
|
||||||
|
- "instal:Install systemd-boot to the ESP and EFI variables"
|
||||||
|
+ "install:Install systemd-boot to the ESP and EFI variables"
|
||||||
|
"update:Update systemd-boot in the ESP and EFI variables"
|
||||||
|
"remove:Remove systemd-boot from the ESP and EFI variables"
|
||||||
|
)
|
@ -0,0 +1,44 @@
|
|||||||
|
From df78ada3b4543af43e4059d0185e3cfd007a9899 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Mack <daniel@zonque.org>
|
||||||
|
Date: Mon, 1 Jun 2015 17:49:04 +0200
|
||||||
|
Subject: [PATCH] load-fragment: use UNESCAPE_RELAX flag to parse exec
|
||||||
|
directives
|
||||||
|
|
||||||
|
The cunescape() helper function used to handle unknown escaping sequences
|
||||||
|
gracefully by copying them over verbatim.
|
||||||
|
|
||||||
|
Commit 527b7a42 ("util: rework cunescape(), improve error handling") added
|
||||||
|
a flag to make that behavior optional, and changed to default to error out
|
||||||
|
with -EINVAL otherwise.
|
||||||
|
|
||||||
|
However, config_parse_exec(), which is used to parse the
|
||||||
|
Exec{Start,Stop}{Post,Pre,} directives of unit files, was not changed along
|
||||||
|
with that commit, which means that directives with improperly escaped
|
||||||
|
command line strings are no longer parsed.
|
||||||
|
|
||||||
|
Relevant bugreports include:
|
||||||
|
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=90794
|
||||||
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787256
|
||||||
|
|
||||||
|
Fix this by passing UNESCAPE_RELAX to config_parse_exec() in order to
|
||||||
|
restore the original behavior.
|
||||||
|
|
||||||
|
(cherry picked from commit 22874a348fb1540c1a2b7907748fc57c9756a7ed)
|
||||||
|
---
|
||||||
|
src/core/load-fragment.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
|
||||||
|
index 9415e92c90..b09481a16b 100644
|
||||||
|
--- a/src/core/load-fragment.c
|
||||||
|
+++ b/src/core/load-fragment.c
|
||||||
|
@@ -609,7 +609,7 @@ int config_parse_exec(
|
||||||
|
else
|
||||||
|
skip = strneq(word, "\\;", MAX(l, 1U));
|
||||||
|
|
||||||
|
- r = cunescape_length(word + skip, l - skip, 0, &c);
|
||||||
|
+ r = cunescape_length(word + skip, l - skip, UNESCAPE_RELAX, &c);
|
||||||
|
if (r < 0) {
|
||||||
|
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to unescape command line, ignoring: %s", rvalue);
|
||||||
|
r = 0;
|
@ -0,0 +1,54 @@
|
|||||||
|
From f5fe08ec458eea4308f807ade0cbf9a5af663f30 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Mack <daniel@zonque.org>
|
||||||
|
Date: Mon, 1 Jun 2015 18:05:02 +0200
|
||||||
|
Subject: [PATCH] test-unit-file: add test for improperly escaped exec string
|
||||||
|
|
||||||
|
Add a regression test for the recent breakage of handling improperly
|
||||||
|
escaped exec strings in unit files.
|
||||||
|
|
||||||
|
Code contributed by Martin Pitt:
|
||||||
|
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=90794
|
||||||
|
|
||||||
|
(cherry picked from commit 80979f1ce4dadf797a42e85a97dc10960c1f6509)
|
||||||
|
---
|
||||||
|
src/test/test-unit-file.c | 19 +++++++++++++++++++
|
||||||
|
1 file changed, 19 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
|
||||||
|
index a9711ac9f5..31b12d50d7 100644
|
||||||
|
--- a/src/test/test-unit-file.c
|
||||||
|
+++ b/src/test/test-unit-file.c
|
||||||
|
@@ -225,6 +225,15 @@ static void test_config_parse_exec(void) {
|
||||||
|
check_execcommand(c1,
|
||||||
|
"/sbin/find", NULL, ";", "x", false);
|
||||||
|
|
||||||
|
+ log_info("/* encoded semicolon */");
|
||||||
|
+ r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||||
|
+ "LValue", 0,
|
||||||
|
+ "/bin/find \\073",
|
||||||
|
+ &c, NULL);
|
||||||
|
+ assert_se(r >= 0);
|
||||||
|
+ c1 = c1->command_next;
|
||||||
|
+ check_execcommand(c1, "/bin/find", NULL, "\\073", NULL, false);
|
||||||
|
+
|
||||||
|
log_info("/* spaces in the filename */");
|
||||||
|
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||||
|
"LValue", 0,
|
||||||
|
@@ -296,6 +305,16 @@ static void test_config_parse_exec(void) {
|
||||||
|
c1 = c1->command_next;
|
||||||
|
check_execcommand(c1, "/path ", NULL, NULL, NULL, false);
|
||||||
|
|
||||||
|
+ log_info("/* quoted backslashes */");
|
||||||
|
+ r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||||
|
+ "LValue", 0,
|
||||||
|
+ "/bin/grep '\\w+\\K'",
|
||||||
|
+ &c, NULL);
|
||||||
|
+ assert_se(r >= 0);
|
||||||
|
+ c1 = c1->command_next;
|
||||||
|
+ check_execcommand(c1, "/bin/grep", NULL, "\\w+\\K", NULL, false);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
log_info("/* trailing backslash: \\ */");
|
||||||
|
/* backslash is invalid */
|
||||||
|
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
30
0032-Separate-the-sign-from-the-number.patch
Normal file
30
0032-Separate-the-sign-from-the-number.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From e4cf1e16e72e94f794fb058571acaae9fdbbacd9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Pablo=20Lezaeta=20Reyes=20=5Bp=CB=88a=CE=B2=CC=9Elo=20l?=
|
||||||
|
=?UTF-8?q?=CB=8Ce=CC=9E=CE=B8a=CB=88eta=20r=CB=88ej=C9=9B=5D?=
|
||||||
|
<prflr88@gmail.com>
|
||||||
|
Date: Tue, 31 Mar 2015 02:47:39 -0300
|
||||||
|
Subject: [PATCH] Separate the % sign from the number
|
||||||
|
|
||||||
|
In spanish the % sign is supposed to be separated from the number [1 and 2 both in spanish] so I separated the %% that draw the percentage sign from the number.
|
||||||
|
|
||||||
|
[1] http://www.fundeu.es/recomendacion/el-se-escribe-separado-de-la-cifra-a-la-que-acompana-802/
|
||||||
|
[2] http://aplica.rae.es/orweb/cgi-bin/v.cgi?i=QGkHLBzKcEgZrQyD
|
||||||
|
|
||||||
|
PD: I know that probably this is not the propper place but I don't know where submit the fix or if I do it right
|
||||||
|
(cherry picked from commit 6f54f5373aa681e66278e8e6edaea06e3d0f8958)
|
||||||
|
---
|
||||||
|
po/es.po | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/po/es.po b/po/es.po
|
||||||
|
index 675f9721bf..811e36e81f 100644
|
||||||
|
--- a/po/es.po
|
||||||
|
+++ b/po/es.po
|
||||||
|
@@ -528,5 +528,5 @@ msgstr ""
|
||||||
|
#, c-format
|
||||||
|
msgid "Checking in progress on %d disk (%3.1f%% complete)"
|
||||||
|
msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
|
||||||
|
-msgstr[0] "Comprobando progreso en %d disco (%3.1f%% completado)"
|
||||||
|
-msgstr[1] "Comprobando progreso en %d discos (%3.1f%% completado)"
|
||||||
|
+msgstr[0] "Comprobando progreso en %d disco (%3.1f %% completado)"
|
||||||
|
+msgstr[1] "Comprobando progreso en %d discos (%3.1f %% completado)"
|
42
0033-zsh-completion-fix-completion-of-user-services.patch
Normal file
42
0033-zsh-completion-fix-completion-of-user-services.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
From a27d1804a1a1d1f522fe7742f42a44ced58dce2e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Cook <llua@gmx.com>
|
||||||
|
Date: Mon, 18 May 2015 18:45:31 -0400
|
||||||
|
Subject: [PATCH] zsh-completion: fix completion of --user services
|
||||||
|
|
||||||
|
By the time __systemctl is called, --user/--system are shifted out of
|
||||||
|
`words' by _arguments. This patch queries the array sooner.
|
||||||
|
|
||||||
|
In the case that both --user and --system are on the line when compsys runs,
|
||||||
|
_sys_service_mgr is set to the latter. Which is seemingly how systemctl behaves.
|
||||||
|
|
||||||
|
If neither are on the line, --system is set; for system services to be completed.
|
||||||
|
|
||||||
|
(cherry picked from commit 68c4f6d406a2bdac6957a67a077f182b0287cc3b)
|
||||||
|
---
|
||||||
|
shell-completion/zsh/_systemctl.in | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
|
||||||
|
index 1dc6406beb..db9bdb60c5 100644
|
||||||
|
--- a/shell-completion/zsh/_systemctl.in
|
||||||
|
+++ b/shell-completion/zsh/_systemctl.in
|
||||||
|
@@ -93,9 +93,7 @@
|
||||||
|
|
||||||
|
__systemctl()
|
||||||
|
{
|
||||||
|
- local -a _modes
|
||||||
|
- _modes=("--user" "--system")
|
||||||
|
- systemctl ${words:*_modes} --full --no-legend --no-pager "$@"
|
||||||
|
+ systemctl $_sys_service_mgr --full --no-legend --no-pager "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -355,6 +353,8 @@ _job_modes() {
|
||||||
|
_values -s , "${_modes[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
+local -a _modes; _modes=("--user" "--system")
|
||||||
|
+local _sys_service_mgr=${${words:*_modes}[(R)(${(j.|.)_modes})]:---system}
|
||||||
|
_arguments -s \
|
||||||
|
{-h,--help}'[Show help]' \
|
||||||
|
'--version[Show package version]' \
|
194
0034-zsh-completion-a-more-style-tag-aware-_systemctl.patch
Normal file
194
0034-zsh-completion-a-more-style-tag-aware-_systemctl.patch
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
From 50bb352ccad52c5f56a457305f5422b1359cbf42 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Cook <llua@gmx.com>
|
||||||
|
Date: Fri, 29 May 2015 10:40:11 -0400
|
||||||
|
Subject: [PATCH] zsh-completion: a more style/tag aware _systemctl
|
||||||
|
|
||||||
|
using _wanted instead of calling compadd directly. this allows the user to customize
|
||||||
|
possible matches.
|
||||||
|
|
||||||
|
An example being, grouping units by type:
|
||||||
|
autoload -Uz compinit; compinit
|
||||||
|
zstyle ':completion:*' menu select
|
||||||
|
zstyle ':completion:*' group-name ''
|
||||||
|
zstyle ':completion:*' format 'Completing %d'
|
||||||
|
zstyle -e ':completion:*:*:systemctl-(((re|)en|dis)able|(*re|)start|reload*):*' \
|
||||||
|
tag-order 'local type; for type in service template target socket;
|
||||||
|
reply+=( systemd-units:-${type}:${type} ); reply=( "$reply systemd-units:-misc:misc" )'
|
||||||
|
zstyle ':completion:*:systemd-units-template' ignored-patterns '^*@'
|
||||||
|
zstyle ':completion:*:systemd-units-target' ignored-patterns '^*.target'
|
||||||
|
zstyle ':completion:*:systemd-units-socket' ignored-patterns '^*.socket'
|
||||||
|
zstyle ':completion:*:systemd-units-service' ignored-patterns '^*.service'
|
||||||
|
zstyle ':completion:*:systemd-units-misc' ignored-patterns '*(@|.(service|socket|target))'
|
||||||
|
|
||||||
|
also, <poke> http://lists.freedesktop.org/archives/systemd-devel/2015-May/032012.html
|
||||||
|
|
||||||
|
(cherry picked from commit d34b7c117bd016cb9ef2c36d474c9a917924abda)
|
||||||
|
---
|
||||||
|
shell-completion/zsh/_systemctl.in | 60 +++++++++++++++++++++++---------------
|
||||||
|
1 file changed, 37 insertions(+), 23 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
|
||||||
|
index db9bdb60c5..17736de01c 100644
|
||||||
|
--- a/shell-completion/zsh/_systemctl.in
|
||||||
|
+++ b/shell-completion/zsh/_systemctl.in
|
||||||
|
@@ -65,7 +65,7 @@
|
||||||
|
if (( CURRENT == 1 )); then
|
||||||
|
_describe -t commands 'systemctl command' _systemctl_cmds || compadd "$@"
|
||||||
|
else
|
||||||
|
- local curcontext="$curcontext"
|
||||||
|
+ local curcontext="$curcontext" expl
|
||||||
|
|
||||||
|
cmd="${${_systemctl_cmds[(r)$words[1]:*]%%:*}}"
|
||||||
|
# Deal with any aliases
|
||||||
|
@@ -172,7 +172,8 @@ for fun in is-active is-failed is-enabled status show cat mask preset help list-
|
||||||
|
(( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
|
||||||
|
{
|
||||||
|
_systemctl_really_all_units
|
||||||
|
- compadd "$@" -a - _sys_really_all_units
|
||||||
|
+ _wanted systemd-units expl unit \
|
||||||
|
+ compadd "$@" -a - _sys_really_all_units
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
@@ -180,34 +181,39 @@ done
|
||||||
|
(( $+functions[_systemctl_disable] )) || _systemctl_disable()
|
||||||
|
{
|
||||||
|
local _sys_unit_state; _systemctl_unit_state
|
||||||
|
- compadd "$@" - ${(k)_sys_unit_state[(R)enabled]}
|
||||||
|
+ _wanted systemd-units expl 'enabled unit' \
|
||||||
|
+ compadd "$@" - ${(k)_sys_unit_state[(R)enabled]}
|
||||||
|
}
|
||||||
|
|
||||||
|
(( $+functions[_systemctl_reenable] )) || _systemctl_reenable()
|
||||||
|
{
|
||||||
|
local _sys_unit_state; _systemctl_unit_state
|
||||||
|
- compadd "$@" - ${(k)_sys_unit_state[(R)(enabled|disabled)]} $(_systemctl_get_template_names)
|
||||||
|
+ _wanted systemd-units expl 'enabled/disabled unit' \
|
||||||
|
+ compadd "$@" - ${(k)_sys_unit_state[(R)(enabled|disabled)]} $(_systemctl_get_template_names)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for DISABLED_UNITS
|
||||||
|
(( $+functions[_systemctl_enable] )) || _systemctl_enable()
|
||||||
|
{
|
||||||
|
local _sys_unit_state; _systemctl_unit_state
|
||||||
|
- compadd "$@" - ${(k)_sys_unit_state[(R)disabled]} $(_systemctl_get_template_names)
|
||||||
|
+ _wanted systemd-units expl 'disabled unit' \
|
||||||
|
+ compadd "$@" - ${(k)_sys_unit_state[(R)disabled]} $(_systemctl_get_template_names)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for FAILED_UNITS
|
||||||
|
(( $+functions[_systemctl_reset-failed] )) || _systemctl_reset-failed()
|
||||||
|
{
|
||||||
|
local _sys_failed_units; _systemctl_failed_units
|
||||||
|
- compadd "$@" -a - _sys_failed_units || _message "no failed unit found"
|
||||||
|
+ _wanted systemd-units expl 'failed unit' \
|
||||||
|
+ compadd "$@" -a - _sys_failed_units || _message "no failed unit found"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for STARTABLE_UNITS
|
||||||
|
(( $+functions[_systemctl_start] )) || _systemctl_start()
|
||||||
|
{
|
||||||
|
local _sys_startable_units; _systemctl_startable_units
|
||||||
|
- compadd "$@" - ${_sys_startable_units[*]} $(_systemctl_get_template_names)
|
||||||
|
+ _wanted systemd-units expl 'startable unit' \
|
||||||
|
+ compadd "$@" - ${_sys_startable_units[*]} $(_systemctl_get_template_names)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for STOPPABLE_UNITS
|
||||||
|
@@ -215,8 +221,9 @@ for fun in stop kill try-restart condrestart ; do
|
||||||
|
(( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
|
||||||
|
{
|
||||||
|
local _sys_active_units; _systemctl_active_units
|
||||||
|
- compadd "$@" - $( _filter_units_by_property CanStop yes \
|
||||||
|
- ${_sys_active_units[*]} )
|
||||||
|
+ _wanted systemd-units expl 'stoppable unit' \
|
||||||
|
+ compadd "$@" - $( _filter_units_by_property CanStop yes \
|
||||||
|
+ ${_sys_active_units[*]} )
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
@@ -224,8 +231,9 @@ done
|
||||||
|
(( $+functions[_systemctl_isolate] )) || _systemctl_isolate()
|
||||||
|
{
|
||||||
|
_systemctl_all_units
|
||||||
|
- compadd "$@" - $( _filter_units_by_property AllowIsolate yes \
|
||||||
|
- ${_sys_all_units[*]} )
|
||||||
|
+ _wanted systemd-units expl 'isolatable unit' \
|
||||||
|
+ compadd "$@" - $( _filter_units_by_property AllowIsolate yes \
|
||||||
|
+ ${_sys_all_units[*]} )
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for RELOADABLE_UNITS
|
||||||
|
@@ -233,8 +241,9 @@ for fun in reload reload-or-try-restart force-reload ; do
|
||||||
|
(( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
|
||||||
|
{
|
||||||
|
local _sys_active_units; _systemctl_active_units
|
||||||
|
- compadd "$@" - $( _filter_units_by_property CanReload yes \
|
||||||
|
- ${_sys_active_units[*]} )
|
||||||
|
+ _wanted systemd-units expl 'reloadable unit' \
|
||||||
|
+ compadd "$@" - $( _filter_units_by_property CanReload yes \
|
||||||
|
+ ${_sys_active_units[*]} )
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
@@ -243,7 +252,8 @@ for fun in restart reload-or-restart ; do
|
||||||
|
(( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
|
||||||
|
{
|
||||||
|
local _sys_restartable_units; _systemctl_restartable_units
|
||||||
|
- compadd "$@" - ${_sys_restartable_units[*]} $(_systemctl_get_template_names)
|
||||||
|
+ _wanted systemd-units expl 'restartable unit' \
|
||||||
|
+ compadd "$@" - ${_sys_restartable_units[*]} $(_systemctl_get_template_names)
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
@@ -251,28 +261,32 @@ done
|
||||||
|
(( $+functions[_systemctl_unmask] )) || _systemctl_unmask()
|
||||||
|
{
|
||||||
|
local _sys_unit_state; _systemctl_unit_state
|
||||||
|
- compadd "$@" - ${(k)_sys_unit_state[(R)masked]} || _message "no masked units found"
|
||||||
|
+ _wanted systemd-units expl 'masked unit' \
|
||||||
|
+ compadd "$@" - ${(k)_sys_unit_state[(R)masked]} || _message "no masked units found"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for JOBS
|
||||||
|
(( $+functions[_systemctl_cancel] )) || _systemctl_cancel()
|
||||||
|
{
|
||||||
|
- compadd "$@" - ${${(f)"$(__systemctl list-jobs)"}%% *} ||
|
||||||
|
- _message "no jobs found"
|
||||||
|
+ _wanted systemd-jobs expl job \
|
||||||
|
+ compadd "$@" - ${${(f)"$(__systemctl list-jobs)"}%% *} ||
|
||||||
|
+ _message "no jobs found"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for SNAPSHOTS
|
||||||
|
(( $+functions[_systemctl_delete] )) || _systemctl_delete()
|
||||||
|
{
|
||||||
|
- compadd "$@" - ${${(f)"$(__systemctl list-units --type snapshot --all)"}%% *} ||
|
||||||
|
- _message "no snapshots found"
|
||||||
|
+ _wanted systemd-snapshots expl snapshot \
|
||||||
|
+ compadd "$@" - ${${(f)"$(__systemctl list-units --type snapshot --all)"}%% *} ||
|
||||||
|
+ _message "no snapshots found"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for TARGETS
|
||||||
|
(( $+functions[_systemctl_set-default] )) || _systemctl_set-default()
|
||||||
|
{
|
||||||
|
- compadd "$@" - ${${(f)"$(__systemctl list-unit-files --type target --all)"}%% *} ||
|
||||||
|
- _message "no targets found"
|
||||||
|
+ _wanted systemd-targets expl target \
|
||||||
|
+ compadd "$@" - ${${(f)"$(__systemctl list-unit-files --type target --all)"}%% *} ||
|
||||||
|
+ _message "no targets found"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion functions for ENVS
|
||||||
|
@@ -284,8 +298,8 @@ for fun in set-environment unset-environment ; do
|
||||||
|
if [[ "${fun}" = "set-environment" ]]; then
|
||||||
|
suf='-S='
|
||||||
|
fi
|
||||||
|
-
|
||||||
|
- compadd "$@" ${suf} - ${${(f)"$(systemctl show-environment)"}%%=*}
|
||||||
|
+ _wanted systemd-environment expl 'environment variable' \
|
||||||
|
+ compadd "$@" ${suf} - ${${(f)"$(systemctl show-environment)"}%%=*}
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
70
0035-missing-add-more-btrfs-defines.patch
Normal file
70
0035-missing-add-more-btrfs-defines.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
From 4ef997dc5832f652d30eefcf67547ca029d190db Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Olbrich <m.olbrich@pengutronix.de>
|
||||||
|
Date: Tue, 2 Jun 2015 11:08:24 +0200
|
||||||
|
Subject: [PATCH] missing: add more btrfs defines
|
||||||
|
|
||||||
|
(cherry picked from commit d97fb4083704ce88d96fcc65ab744801909dd0b0)
|
||||||
|
---
|
||||||
|
src/shared/missing.h | 28 ++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/shared/missing.h b/src/shared/missing.h
|
||||||
|
index 9194009491..be7f6186fc 100644
|
||||||
|
--- a/src/shared/missing.h
|
||||||
|
+++ b/src/shared/missing.h
|
||||||
|
@@ -269,6 +269,11 @@ struct btrfs_qgroup_inherit {
|
||||||
|
__u64 qgroups[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
+struct btrfs_ioctl_qgroup_limit_args {
|
||||||
|
+ __u64 qgroupid;
|
||||||
|
+ struct btrfs_qgroup_limit lim;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
struct btrfs_ioctl_vol_args_v2 {
|
||||||
|
__s64 fd;
|
||||||
|
__u64 transid;
|
||||||
|
@@ -360,6 +365,14 @@ struct btrfs_ioctl_clone_range_args {
|
||||||
|
__u64 src_offset, src_length;
|
||||||
|
__u64 dest_offset;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+#define BTRFS_QUOTA_CTL_ENABLE 1
|
||||||
|
+#define BTRFS_QUOTA_CTL_DISABLE 2
|
||||||
|
+#define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3
|
||||||
|
+struct btrfs_ioctl_quota_ctl_args {
|
||||||
|
+ __u64 cmd;
|
||||||
|
+ __u64 status;
|
||||||
|
+};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BTRFS_IOC_DEFRAG
|
||||||
|
@@ -367,6 +380,11 @@ struct btrfs_ioctl_clone_range_args {
|
||||||
|
struct btrfs_ioctl_vol_args)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifndef BTRFS_IOC_RESIZE
|
||||||
|
+#define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, \
|
||||||
|
+ struct btrfs_ioctl_vol_args)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifndef BTRFS_IOC_CLONE
|
||||||
|
#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int)
|
||||||
|
#endif
|
||||||
|
@@ -424,6 +442,16 @@ struct btrfs_ioctl_clone_range_args {
|
||||||
|
struct btrfs_ioctl_vol_args)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifndef BTRFS_IOC_QUOTA_CTL
|
||||||
|
+#define BTRFS_IOC_QUOTA_CTL _IOWR(BTRFS_IOCTL_MAGIC, 40, \
|
||||||
|
+ struct btrfs_ioctl_quota_ctl_args)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#ifndef BTRFS_IOC_QGROUP_LIMIT
|
||||||
|
+#define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43, \
|
||||||
|
+ struct btrfs_ioctl_qgroup_limit_args)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifndef BTRFS_FIRST_FREE_OBJECTID
|
||||||
|
#define BTRFS_FIRST_FREE_OBJECTID 256
|
||||||
|
#endif
|
186
0036-hwdb-Update-database-of-Bluetooth-company-identifier.patch
Normal file
186
0036-hwdb-Update-database-of-Bluetooth-company-identifier.patch
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
From 502fcfa0c7a24caac76c41ebbeb3cf807aa3d5db Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marcel Holtmann <marcel@holtmann.org>
|
||||||
|
Date: Mon, 1 Jun 2015 21:11:40 +0200
|
||||||
|
Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
|
||||||
|
|
||||||
|
(cherry picked from commit 2fd51106ee0d685ca1512a01e6680142382586a7)
|
||||||
|
---
|
||||||
|
hwdb/20-bluetooth-vendor-product.hwdb | 161 +++++++++++++++++++++++++++++++++-
|
||||||
|
1 file changed, 160 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
|
||||||
|
index ff8862b9ea..93241ca490 100644
|
||||||
|
--- a/hwdb/20-bluetooth-vendor-product.hwdb
|
||||||
|
+++ b/hwdb/20-bluetooth-vendor-product.hwdb
|
||||||
|
@@ -1237,7 +1237,7 @@ bluetooth:v0199*
|
||||||
|
ID_VENDOR_FROM_DATABASE=SALTO SYSTEMS S.L.
|
||||||
|
|
||||||
|
bluetooth:v019A*
|
||||||
|
- ID_VENDOR_FROM_DATABASE=T-Engine Forum
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=TRON Forum (formerly T-Engine Forum)
|
||||||
|
|
||||||
|
bluetooth:v019B*
|
||||||
|
ID_VENDOR_FROM_DATABASE=CUBETECH s.r.o.
|
||||||
|
@@ -1508,3 +1508,162 @@ bluetooth:v01F3*
|
||||||
|
|
||||||
|
bluetooth:v01F4*
|
||||||
|
ID_VENDOR_FROM_DATABASE=UTC Fire and Security
|
||||||
|
+
|
||||||
|
+bluetooth:v01F5*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Cool Webthings Limited
|
||||||
|
+
|
||||||
|
+bluetooth:v01F6*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=DJO Global
|
||||||
|
+
|
||||||
|
+bluetooth:v01F7*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Gelliner Limited
|
||||||
|
+
|
||||||
|
+bluetooth:v01F8*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Anyka (Guangzhou) Microelectronics Technology Co, LTD
|
||||||
|
+
|
||||||
|
+bluetooth:v01F9*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Medtronic, Inc.
|
||||||
|
+
|
||||||
|
+bluetooth:v01FA*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Gozio, Inc.
|
||||||
|
+
|
||||||
|
+bluetooth:v01FB*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Form Lifting, LLC
|
||||||
|
+
|
||||||
|
+bluetooth:v01FC*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Wahoo Fitness, LLC
|
||||||
|
+
|
||||||
|
+bluetooth:v01FD*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Kontakt Micro-Location Sp. z o.o.
|
||||||
|
+
|
||||||
|
+bluetooth:v01FE*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Radio System Corporation
|
||||||
|
+
|
||||||
|
+bluetooth:v01FF*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Freescale Semiconductor, Inc.
|
||||||
|
+
|
||||||
|
+bluetooth:v0200*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Verifone Systems PTe Ltd. Taiwan Branch
|
||||||
|
+
|
||||||
|
+bluetooth:v0201*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=AR Timing
|
||||||
|
+
|
||||||
|
+bluetooth:v0202*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Rigado LLC
|
||||||
|
+
|
||||||
|
+bluetooth:v0203*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Kemppi Oy
|
||||||
|
+
|
||||||
|
+bluetooth:v0204*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Tapcentive Inc.
|
||||||
|
+
|
||||||
|
+bluetooth:v0205*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Smartbotics Inc.
|
||||||
|
+
|
||||||
|
+bluetooth:v0206*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Otter Products, LLC
|
||||||
|
+
|
||||||
|
+bluetooth:v0207*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=STEMP Inc.
|
||||||
|
+
|
||||||
|
+bluetooth:v0208*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=LumiGeek LLC
|
||||||
|
+
|
||||||
|
+bluetooth:v0209*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=InvisionHeart Inc.
|
||||||
|
+
|
||||||
|
+bluetooth:v020A*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Macnica Inc.
|
||||||
|
+
|
||||||
|
+bluetooth:v020B*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Jaguar Land Rover Limited
|
||||||
|
+
|
||||||
|
+bluetooth:v020C*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=CoroWare Technologies, Inc
|
||||||
|
+
|
||||||
|
+bluetooth:v020D*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Simplo Technology Co., LTD
|
||||||
|
+
|
||||||
|
+bluetooth:v020E*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Omron Healthcare Co., LTD
|
||||||
|
+
|
||||||
|
+bluetooth:v020F*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Comodule GMBH
|
||||||
|
+
|
||||||
|
+bluetooth:v0210*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=ikeGPS
|
||||||
|
+
|
||||||
|
+bluetooth:v0211*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Telink Semiconductor Co. Ltd
|
||||||
|
+
|
||||||
|
+bluetooth:v0212*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Interplan Co., Ltd
|
||||||
|
+
|
||||||
|
+bluetooth:v0213*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Wyler AG
|
||||||
|
+
|
||||||
|
+bluetooth:v0214*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=IK Multimedia Production srl
|
||||||
|
+
|
||||||
|
+bluetooth:v0215*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Lukoton Experience Oy
|
||||||
|
+
|
||||||
|
+bluetooth:v0216*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=MTI Ltd
|
||||||
|
+
|
||||||
|
+bluetooth:v0217*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Tech4home, Lda
|
||||||
|
+
|
||||||
|
+bluetooth:v0218*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Hiotech AB
|
||||||
|
+
|
||||||
|
+bluetooth:v0219*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=DOTT Limited
|
||||||
|
+
|
||||||
|
+bluetooth:v021A*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Blue Speck Labs, LLC
|
||||||
|
+
|
||||||
|
+bluetooth:v021B*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Cisco Systems Inc
|
||||||
|
+
|
||||||
|
+bluetooth:v021C*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Mobicomm Inc
|
||||||
|
+
|
||||||
|
+bluetooth:v021D*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Edamic
|
||||||
|
+
|
||||||
|
+bluetooth:v021E*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Goodnet Ltd
|
||||||
|
+
|
||||||
|
+bluetooth:v021F*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Luster Leaf Products Inc
|
||||||
|
+
|
||||||
|
+bluetooth:v0220*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Manus Machina BV
|
||||||
|
+
|
||||||
|
+bluetooth:v0221*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Mobiquity Networks Inc
|
||||||
|
+
|
||||||
|
+bluetooth:v0222*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Praxis Dynamics
|
||||||
|
+
|
||||||
|
+bluetooth:v0223*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Philip Morris Products S.A.
|
||||||
|
+
|
||||||
|
+bluetooth:v0224*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Comarch SA
|
||||||
|
+
|
||||||
|
+bluetooth:v0225*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Nestl Nespresso S.A.
|
||||||
|
+
|
||||||
|
+bluetooth:v0226*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Merlinia A/S
|
||||||
|
+
|
||||||
|
+bluetooth:v0227*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=LifeBEAM Technologies
|
||||||
|
+
|
||||||
|
+bluetooth:v0228*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Twocanoes Labs, LLC
|
||||||
|
+
|
||||||
|
+bluetooth:v0229*
|
||||||
|
+ ID_VENDOR_FROM_DATABASE=Muoverti Limited
|
1052
0037-hwdb-update.patch
Normal file
1052
0037-hwdb-update.patch
Normal file
File diff suppressed because it is too large
Load Diff
37
0038-README-update-links-to-reference-new-home-GitHub.patch
Normal file
37
0038-README-update-links-to-reference-new-home-GitHub.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From 6f0c06705a671ae53942f52bd7c66eea986150fa Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jonathan Boulle <jonathanboulle@gmail.com>
|
||||||
|
Date: Tue, 2 Jun 2015 15:57:50 -0700
|
||||||
|
Subject: [PATCH] README: update links to reference new home (GitHub)
|
||||||
|
|
||||||
|
(cherry picked from commit eb0914fc85812570538c37287dd3cfa377289418)
|
||||||
|
---
|
||||||
|
README | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/README b/README
|
||||||
|
index b909b434db..528f957714 100644
|
||||||
|
--- a/README
|
||||||
|
+++ b/README
|
||||||
|
@@ -7,11 +7,11 @@ WEB SITE:
|
||||||
|
http://www.freedesktop.org/wiki/Software/systemd
|
||||||
|
|
||||||
|
GIT:
|
||||||
|
- git://anongit.freedesktop.org/systemd/systemd
|
||||||
|
- ssh://git.freedesktop.org/git/systemd/systemd
|
||||||
|
+ git@github.com:systemd/systemd.git
|
||||||
|
+ https://github.com/systemd/systemd.git
|
||||||
|
|
||||||
|
GITWEB:
|
||||||
|
- http://cgit.freedesktop.org/systemd/systemd
|
||||||
|
+ https://github.com/systemd/systemd
|
||||||
|
|
||||||
|
MAILING LIST:
|
||||||
|
http://lists.freedesktop.org/mailman/listinfo/systemd-devel
|
||||||
|
@@ -22,6 +22,7 @@ IRC:
|
||||||
|
|
||||||
|
BUG REPORTS:
|
||||||
|
https://bugs.freedesktop.org/enter_bug.cgi?product=systemd
|
||||||
|
+ https://github.com/systemd/systemd/issues
|
||||||
|
|
||||||
|
AUTHOR:
|
||||||
|
Lennart Poettering
|
@ -0,0 +1,36 @@
|
|||||||
|
From 182abe6e6881a696fc456a1aadaa90bcebd51ea4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kay Sievers <kay@vrfy.org>
|
||||||
|
Date: Wed, 3 Jun 2015 14:48:55 +0200
|
||||||
|
Subject: [PATCH] point to github issues instead of freedesktop bugzilla
|
||||||
|
|
||||||
|
(cherry picked from commit 29d01b70640878f63e74ce20cb45fd747311fa18)
|
||||||
|
---
|
||||||
|
README | 1 -
|
||||||
|
configure.ac | 2 +-
|
||||||
|
2 files changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/README b/README
|
||||||
|
index 528f957714..c19beffa20 100644
|
||||||
|
--- a/README
|
||||||
|
+++ b/README
|
||||||
|
@@ -21,7 +21,6 @@ IRC:
|
||||||
|
#systemd on irc.freenode.org
|
||||||
|
|
||||||
|
BUG REPORTS:
|
||||||
|
- https://bugs.freedesktop.org/enter_bug.cgi?product=systemd
|
||||||
|
https://github.com/systemd/systemd/issues
|
||||||
|
|
||||||
|
AUTHOR:
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 0818dd80cf..fa3232e3c1 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -21,7 +21,7 @@ AC_PREREQ([2.64])
|
||||||
|
|
||||||
|
AC_INIT([systemd],
|
||||||
|
[220],
|
||||||
|
- [http://bugs.freedesktop.org/enter_bug.cgi?product=systemd],
|
||||||
|
+ [http://github.com/systemd/systemd/issues]
|
||||||
|
[systemd],
|
||||||
|
[http://www.freedesktop.org/wiki/Software/systemd])
|
||||||
|
|
23
0040-configure.ac-add-missing-komma.patch
Normal file
23
0040-configure.ac-add-missing-komma.patch
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
From d203089834c735b422f48cafe917aab1134591b3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kay Sievers <kay@vrfy.org>
|
||||||
|
Date: Wed, 3 Jun 2015 14:50:58 +0200
|
||||||
|
Subject: [PATCH] configure.ac: add missing komma
|
||||||
|
|
||||||
|
(cherry picked from commit 1a435084b7f55bc24042f9bc47c18e4e2381f667)
|
||||||
|
---
|
||||||
|
configure.ac | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index fa3232e3c1..ffde0a667b 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -21,7 +21,7 @@ AC_PREREQ([2.64])
|
||||||
|
|
||||||
|
AC_INIT([systemd],
|
||||||
|
[220],
|
||||||
|
- [http://github.com/systemd/systemd/issues]
|
||||||
|
+ [http://github.com/systemd/systemd/issues],
|
||||||
|
[systemd],
|
||||||
|
[http://www.freedesktop.org/wiki/Software/systemd])
|
||||||
|
|
48
0041-util-fix-another-cunescape-regression.patch
Normal file
48
0041-util-fix-another-cunescape-regression.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
From c47edbd3bfaf64ad8fa3d105029bed8667baf275 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Mack <daniel@zonque.org>
|
||||||
|
Date: Wed, 3 Jun 2015 13:33:26 +0200
|
||||||
|
Subject: [PATCH] util: fix another cunescape() regression
|
||||||
|
|
||||||
|
Fix a regression caused by 4034a06d ("util: rework word parsing and c
|
||||||
|
unescaping code") which broke octal escape sequences.
|
||||||
|
|
||||||
|
The reason for this breakage is that cunescape_one() expects 4 characters
|
||||||
|
in an octal encoding, which is a stray left-over from the old code which
|
||||||
|
operated on different variables to make the length check.
|
||||||
|
|
||||||
|
While at it, add a test case to prevent the same thing from happening
|
||||||
|
again.
|
||||||
|
|
||||||
|
(cherry picked from commit 3b51f8ddd5408eaae06e774e40144c7788748000)
|
||||||
|
---
|
||||||
|
src/shared/util.c | 2 +-
|
||||||
|
src/test/test-util.c | 3 +++
|
||||||
|
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/shared/util.c b/src/shared/util.c
|
||||||
|
index 74a2190031..57782ba687 100644
|
||||||
|
--- a/src/shared/util.c
|
||||||
|
+++ b/src/shared/util.c
|
||||||
|
@@ -1186,7 +1186,7 @@ static int cunescape_one(const char *p, size_t length, char *ret, uint32_t *ret_
|
||||||
|
int a, b, c;
|
||||||
|
uint32_t m;
|
||||||
|
|
||||||
|
- if (length != (size_t) -1 && length < 4)
|
||||||
|
+ if (length != (size_t) -1 && length < 3)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
a = unoctchar(p[0]);
|
||||||
|
diff --git a/src/test/test-util.c b/src/test/test-util.c
|
||||||
|
index 36773c109d..fab485fa14 100644
|
||||||
|
--- a/src/test/test-util.c
|
||||||
|
+++ b/src/test/test-util.c
|
||||||
|
@@ -459,6 +459,9 @@ static void test_cunescape(void) {
|
||||||
|
assert_se(cunescape("\\u0000", 0, &unescaped) < 0);
|
||||||
|
assert_se(cunescape("\\u00DF\\U000000df\\u03a0\\U00000041", UNESCAPE_RELAX, &unescaped) >= 0);
|
||||||
|
assert_se(streq_ptr(unescaped, "ßßΠA"));
|
||||||
|
+
|
||||||
|
+ assert_se(cunescape("\\073", 0, &unescaped) >= 0);
|
||||||
|
+ assert_se(streq_ptr(unescaped, ";"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_foreach_word(void) {
|
@ -0,0 +1,23 @@
|
|||||||
|
From 2f07442729010a010c88b34a0d5fc51d30e622ea Mon Sep 17 00:00:00 2001
|
||||||
|
From: Harald Hoyer <harald@redhat.com>
|
||||||
|
Date: Wed, 3 Jun 2015 16:36:20 +0200
|
||||||
|
Subject: [PATCH] test-unit-file.c: fixup the test for commit 3b51f8ddd5
|
||||||
|
|
||||||
|
(cherry picked from commit ce54255fa599d32738a311c77331fa611e6cfa5e)
|
||||||
|
---
|
||||||
|
src/test/test-unit-file.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
|
||||||
|
index 31b12d50d7..a8025c825b 100644
|
||||||
|
--- a/src/test/test-unit-file.c
|
||||||
|
+++ b/src/test/test-unit-file.c
|
||||||
|
@@ -232,7 +232,7 @@ static void test_config_parse_exec(void) {
|
||||||
|
&c, NULL);
|
||||||
|
assert_se(r >= 0);
|
||||||
|
c1 = c1->command_next;
|
||||||
|
- check_execcommand(c1, "/bin/find", NULL, "\\073", NULL, false);
|
||||||
|
+ check_execcommand(c1, "/bin/find", NULL, ";", NULL, false);
|
||||||
|
|
||||||
|
log_info("/* spaces in the filename */");
|
||||||
|
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
47
0043-systemctl-Use-usr-bin-editor-if-available.patch
Normal file
47
0043-systemctl-Use-usr-bin-editor-if-available.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
From 1e534b8a0da393c90b6dedeb5fdd1abd08293ae7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Biebl <biebl@debian.org>
|
||||||
|
Date: Wed, 3 Jun 2015 14:00:59 +0200
|
||||||
|
Subject: [PATCH] systemctl: Use /usr/bin/editor if available
|
||||||
|
|
||||||
|
If the EDITOR environment variable is not set, the Debian policy
|
||||||
|
recommends to use the /usr/bin/editor program as default editor.
|
||||||
|
This file is managed via the dpkg alternatives mechanism and typically
|
||||||
|
used in Debian/Ubuntu and derivatives to configure the default editor.
|
||||||
|
|
||||||
|
See section 11.4 of the Debian policy [1].
|
||||||
|
|
||||||
|
Therefor prefer /usr/bin/editor over specific editors if available.
|
||||||
|
|
||||||
|
[1] https://www.debian.org/doc/debian-policy/ch-customized-programs.html
|
||||||
|
|
||||||
|
(cherry picked from commit 9391a1c3d6c94c478b0016a81df3f874fd99260e)
|
||||||
|
---
|
||||||
|
man/systemctl.xml | 1 +
|
||||||
|
src/systemctl/systemctl.c | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/man/systemctl.xml b/man/systemctl.xml
|
||||||
|
index 94a77bce0c..9b79c2df0f 100644
|
||||||
|
--- a/man/systemctl.xml
|
||||||
|
+++ b/man/systemctl.xml
|
||||||
|
@@ -1730,6 +1730,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
|
||||||
|
<varname>$VISUAL</varname> are present or if it is set to an empty
|
||||||
|
string or if their execution failed, systemctl will try to execute well
|
||||||
|
known editors in this order:
|
||||||
|
+ <citerefentry project='die-net'><refentrytitle>editor</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
||||||
|
<citerefentry project='die-net'><refentrytitle>nano</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
||||||
|
<citerefentry project='die-net'><refentrytitle>vim</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
||||||
|
<citerefentry project='die-net'><refentrytitle>vi</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
|
||||||
|
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
||||||
|
index f8e10a4710..cf5aa07ac6 100644
|
||||||
|
--- a/src/systemctl/systemctl.c
|
||||||
|
+++ b/src/systemctl/systemctl.c
|
||||||
|
@@ -5870,7 +5870,7 @@ static int run_editor(char **paths) {
|
||||||
|
execvp(editor, (char* const*) args);
|
||||||
|
}
|
||||||
|
|
||||||
|
- FOREACH_STRING(p, "nano", "vim", "vi") {
|
||||||
|
+ FOREACH_STRING(p, "editor", "nano", "vim", "vi") {
|
||||||
|
args[0] = p;
|
||||||
|
execvp(p, (char* const*) args);
|
||||||
|
/* We do not fail if the editor doesn't exist
|
137
0044-libudev-enumerate-accept-NULL-parameters-in-add_matc.patch
Normal file
137
0044-libudev-enumerate-accept-NULL-parameters-in-add_matc.patch
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
From 929227823d61ecc408d85b328ab04604e7f540cf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
|
Date: Wed, 3 Jun 2015 22:08:46 +0200
|
||||||
|
Subject: [PATCH] libudev: enumerate - accept NULL parameters in add_match()
|
||||||
|
|
||||||
|
This was a regression introduced when moving to sd-device.
|
||||||
|
|
||||||
|
(cherry picked from commit 54f0b4d9a3e3e1b955d0b0021d9678571d91a5ef)
|
||||||
|
---
|
||||||
|
src/libsystemd/sd-device/device-enumerator.c | 18 ++++++++++--------
|
||||||
|
src/libudev/libudev-enumerate.c | 21 +++++++++++++++++++++
|
||||||
|
2 files changed, 31 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c
|
||||||
|
index 3692d46e06..7fd77e9480 100644
|
||||||
|
--- a/src/libsystemd/sd-device/device-enumerator.c
|
||||||
|
+++ b/src/libsystemd/sd-device/device-enumerator.c
|
||||||
|
@@ -137,7 +137,6 @@ _public_ int sd_device_enumerator_add_match_sysattr(sd_device_enumerator *enumer
|
||||||
|
|
||||||
|
assert_return(enumerator, -EINVAL);
|
||||||
|
assert_return(_sysattr, -EINVAL);
|
||||||
|
- assert_return(_value, -EINVAL);
|
||||||
|
|
||||||
|
if (match)
|
||||||
|
hashmap = &enumerator->match_sysattr;
|
||||||
|
@@ -152,9 +151,11 @@ _public_ int sd_device_enumerator_add_match_sysattr(sd_device_enumerator *enumer
|
||||||
|
if (!sysattr)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
- value = strdup(_value);
|
||||||
|
- if (!value)
|
||||||
|
- return -ENOMEM;
|
||||||
|
+ if (_value) {
|
||||||
|
+ value = strdup(_value);
|
||||||
|
+ if (!value)
|
||||||
|
+ return -ENOMEM;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
r = hashmap_put(*hashmap, sysattr, value);
|
||||||
|
if (r < 0)
|
||||||
|
@@ -174,7 +175,6 @@ _public_ int sd_device_enumerator_add_match_property(sd_device_enumerator *enume
|
||||||
|
|
||||||
|
assert_return(enumerator, -EINVAL);
|
||||||
|
assert_return(_property, -EINVAL);
|
||||||
|
- assert_return(_value, -EINVAL);
|
||||||
|
|
||||||
|
r = hashmap_ensure_allocated(&enumerator->match_property, NULL);
|
||||||
|
if (r < 0)
|
||||||
|
@@ -184,9 +184,11 @@ _public_ int sd_device_enumerator_add_match_property(sd_device_enumerator *enume
|
||||||
|
if (!property)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
- value = strdup(_value);
|
||||||
|
- if (!value)
|
||||||
|
- return -ENOMEM;
|
||||||
|
+ if (_value) {
|
||||||
|
+ value = strdup(_value);
|
||||||
|
+ if (!value)
|
||||||
|
+ return -ENOMEM;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
r = hashmap_put(enumerator->match_property, property, value);
|
||||||
|
if (r < 0)
|
||||||
|
diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
|
||||||
|
index 255fbe808d..df088946df 100644
|
||||||
|
--- a/src/libudev/libudev-enumerate.c
|
||||||
|
+++ b/src/libudev/libudev-enumerate.c
|
||||||
|
@@ -196,6 +196,9 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume
|
||||||
|
_public_ int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem) {
|
||||||
|
assert_return(udev_enumerate, -EINVAL);
|
||||||
|
|
||||||
|
+ if (!subsystem)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
return sd_device_enumerator_add_match_subsystem(udev_enumerate->enumerator, subsystem, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -211,6 +214,9 @@ _public_ int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enum
|
||||||
|
_public_ int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem) {
|
||||||
|
assert_return(udev_enumerate, -EINVAL);
|
||||||
|
|
||||||
|
+ if (!subsystem)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
return sd_device_enumerator_add_match_subsystem(udev_enumerate->enumerator, subsystem, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -227,6 +233,9 @@ _public_ int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_en
|
||||||
|
_public_ int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value) {
|
||||||
|
assert_return(udev_enumerate, -EINVAL);
|
||||||
|
|
||||||
|
+ if (!sysattr)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
return sd_device_enumerator_add_match_sysattr(udev_enumerate->enumerator, sysattr, value, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -243,6 +252,9 @@ _public_ int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumer
|
||||||
|
_public_ int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value) {
|
||||||
|
assert_return(udev_enumerate, -EINVAL);
|
||||||
|
|
||||||
|
+ if (!sysattr)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
return sd_device_enumerator_add_match_sysattr(udev_enumerate->enumerator, sysattr, value, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -259,6 +271,9 @@ _public_ int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enum
|
||||||
|
_public_ int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, const char *property, const char *value) {
|
||||||
|
assert_return(udev_enumerate, -EINVAL);
|
||||||
|
|
||||||
|
+ if (!property)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
return sd_device_enumerator_add_match_property(udev_enumerate->enumerator, property, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -274,6 +289,9 @@ _public_ int udev_enumerate_add_match_property(struct udev_enumerate *udev_enume
|
||||||
|
_public_ int udev_enumerate_add_match_tag(struct udev_enumerate *udev_enumerate, const char *tag) {
|
||||||
|
assert_return(udev_enumerate, -EINVAL);
|
||||||
|
|
||||||
|
+ if (!tag)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
return sd_device_enumerator_add_match_tag(udev_enumerate->enumerator, tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -335,6 +353,9 @@ _public_ int udev_enumerate_add_match_is_initialized(struct udev_enumerate *udev
|
||||||
|
_public_ int udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate, const char *sysname) {
|
||||||
|
assert_return(udev_enumerate, -EINVAL);
|
||||||
|
|
||||||
|
+ if (!sysname)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
return sd_device_enumerator_add_match_sysname(udev_enumerate->enumerator, sysname);
|
||||||
|
}
|
||||||
|
|
25
0045-Add-dev-xvd-to-60-persistent-storage-whitelist.patch
Normal file
25
0045-Add-dev-xvd-to-60-persistent-storage-whitelist.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From fa7f0bc082bbcfaa997f949b8b4a035fd8a01eda Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ed Swierk <eswierk@skyportsystems.com>
|
||||||
|
Date: Wed, 3 Jun 2015 08:08:37 -0700
|
||||||
|
Subject: [PATCH] Add /dev/xvd* to 60-persistent-storage whitelist Without
|
||||||
|
this, systemd-udevd does not create persistent storage symlinks for xen block
|
||||||
|
devices.
|
||||||
|
|
||||||
|
(cherry picked from commit ff2aa01e61f8aff149b63231365f1cef008296a2)
|
||||||
|
---
|
||||||
|
rules/60-persistent-storage.rules | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
|
||||||
|
index 2aa15f3411..64c5f1cfdd 100644
|
||||||
|
--- a/rules/60-persistent-storage.rules
|
||||||
|
+++ b/rules/60-persistent-storage.rules
|
||||||
|
@@ -6,7 +6,7 @@
|
||||||
|
ACTION=="remove", GOTO="persistent_storage_end"
|
||||||
|
|
||||||
|
SUBSYSTEM!="block", GOTO="persistent_storage_end"
|
||||||
|
-KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|bcache*", GOTO="persistent_storage_end"
|
||||||
|
+KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|bcache*|xvd*", GOTO="persistent_storage_end"
|
||||||
|
|
||||||
|
# ignore partitions that span the entire disk
|
||||||
|
TEST=="whole_disk", GOTO="persistent_storage_end"
|
31
0046-hwdb-add-Apple-MagicMouse-entry.patch
Normal file
31
0046-hwdb-add-Apple-MagicMouse-entry.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From 78ec5ea630547d9ec60c4e6afd6abf054681dbd6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Thu, 4 Jun 2015 16:05:08 +1000
|
||||||
|
Subject: [PATCH] hwdb: add Apple MagicMouse entry
|
||||||
|
|
||||||
|
(cherry picked from commit 68a6ac91a1b8454a5f21846ffef3e1f024707b27)
|
||||||
|
---
|
||||||
|
hwdb/70-mouse.hwdb | 10 ++++++++++
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb
|
||||||
|
index 8174f2762e..2784b941a1 100644
|
||||||
|
--- a/hwdb/70-mouse.hwdb
|
||||||
|
+++ b/hwdb/70-mouse.hwdb
|
||||||
|
@@ -102,6 +102,16 @@
|
||||||
|
# For mice with switchable resolution, sort by the starred entry.
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
+# Apple
|
||||||
|
+##########################################
|
||||||
|
+
|
||||||
|
+# Apple MagicMouse
|
||||||
|
+# Note: this device changes name once connected to a mac, the name ends up
|
||||||
|
+# as $username`s mouse
|
||||||
|
+mouse:bluetooth:v05acp030d:name:*:
|
||||||
|
+ MOUSE_DPI=1300@1000
|
||||||
|
+
|
||||||
|
+##########################################
|
||||||
|
# Chicony
|
||||||
|
##########################################
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
From 2259b85e4722ec81a11229e3f2d8abb1b3e93a8b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philip Withnall <philip.withnall@collabora.co.uk>
|
||||||
|
Date: Tue, 2 Jun 2015 15:24:48 +0100
|
||||||
|
Subject: [PATCH] logind: Add a udev rule to tag all DRM cards with
|
||||||
|
master-of-seat
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
This is needed for generic DRM devices like the VirtualBox vboxvideo
|
||||||
|
driver, which exposes itself as a generic, ID-less DRM device at
|
||||||
|
/dev/dri/card0 (after applying this commit):
|
||||||
|
$ udevadm info --query=all --path \
|
||||||
|
/sys/devices/pci0000:00/0000:00:02.0/drm/card0
|
||||||
|
P: /devices/pci0000:00/0000:00:02.0/drm/card0
|
||||||
|
N: dri/card0
|
||||||
|
E: DEVNAME=/dev/dri/card0
|
||||||
|
E: DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
|
||||||
|
E: DEVTYPE=drm_minor
|
||||||
|
E: ID_FOR_SEAT=drm-pci-0000_00_02_0
|
||||||
|
E: ID_PATH=pci-0000:00:02.0
|
||||||
|
E: ID_PATH_TAG=pci-0000_00_02_0
|
||||||
|
E: MAJOR=226
|
||||||
|
E: MINOR=0
|
||||||
|
E: SUBSYSTEM=drm
|
||||||
|
E: TAGS=:master-of-seat:seat:uaccess:
|
||||||
|
E: USEC_INITIALIZED=59893
|
||||||
|
|
||||||
|
Without this patch, the capabilities for a seat on a VirtualBox
|
||||||
|
installation of systemd v219 incorrectly show it as non-graphical, even
|
||||||
|
though I can type these commands from an xterm:
|
||||||
|
$ loginctl show-seat seat0
|
||||||
|
Id=seat0
|
||||||
|
CanMultiSession=yes
|
||||||
|
CanTTY=yes
|
||||||
|
CanGraphical=no
|
||||||
|
…
|
||||||
|
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=90822
|
||||||
|
(cherry picked from commit ed817cd4e58c5f5c868d5d9e59a1d7e66b1da165)
|
||||||
|
---
|
||||||
|
src/login/71-seat.rules.in | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/src/login/71-seat.rules.in b/src/login/71-seat.rules.in
|
||||||
|
index ad26acbbb3..ab7b66f651 100644
|
||||||
|
--- a/src/login/71-seat.rules.in
|
||||||
|
+++ b/src/login/71-seat.rules.in
|
||||||
|
@@ -11,6 +11,7 @@ TAG=="uaccess", SUBSYSTEM!="sound", TAG+="seat"
|
||||||
|
SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat"
|
||||||
|
SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat"
|
||||||
|
SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat", TAG+="master-of-seat"
|
||||||
|
+SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="seat", TAG+="master-of-seat"
|
||||||
|
SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat"
|
||||||
|
|
||||||
|
# 'Plugable' USB hub, sound, network, graphics adapter
|
@ -0,0 +1,44 @@
|
|||||||
|
From a3f788f9a2f5263fd91b5fbd2fce87af9dceca68 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philip Withnall <philip.withnall@collabora.co.uk>
|
||||||
|
Date: Tue, 2 Jun 2015 14:17:10 +0100
|
||||||
|
Subject: [PATCH] =?UTF-8?q?logind:=20Save=20the=20user=E2=80=99s=20state?=
|
||||||
|
=?UTF-8?q?=20when=20a=20session=20enters=20SESSION=5FACTIVE?=
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
When (for example) switching from X11 to a new VT and logging in there,
|
||||||
|
creating a new session, the user state file (/run/systemd/users/$uid) is
|
||||||
|
not updated after the session becomes active. The latest time it is
|
||||||
|
saved is when the session is in SESSION_OPENING.
|
||||||
|
|
||||||
|
This results in a /run/systemd/users/$uid file which contains
|
||||||
|
STATE=online for the current user on the current active VT, which is
|
||||||
|
obviously wrong.
|
||||||
|
|
||||||
|
As functions like sd_uid_get_state() use this file to get the user’s
|
||||||
|
state, this could result in things like PolicyKit making incorrect
|
||||||
|
decisions about the user’s state. (See
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=76358.)
|
||||||
|
|
||||||
|
Fix this by re-saving the state for a session’s user after completing
|
||||||
|
the state_job for that session.
|
||||||
|
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=90818
|
||||||
|
(cherry picked from commit 41dfeaa194c18de49706b5cecf4e53accd12b7f6)
|
||||||
|
---
|
||||||
|
src/login/logind-dbus.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
|
||||||
|
index 3555bcc2f5..47646a81bb 100644
|
||||||
|
--- a/src/login/logind-dbus.c
|
||||||
|
+++ b/src/login/logind-dbus.c
|
||||||
|
@@ -2522,6 +2522,7 @@ int match_job_removed(sd_bus_message *message, void *userdata, sd_bus_error *err
|
||||||
|
session_jobs_reply(session, unit, result);
|
||||||
|
|
||||||
|
session_save(session);
|
||||||
|
+ user_save(session->user);
|
||||||
|
session_add_to_gc_queue(session);
|
||||||
|
}
|
||||||
|
|
41
0049-small-fix-ru-translation.patch
Normal file
41
0049-small-fix-ru-translation.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
From f6c1eee14b2c568008f8f43f6c4ee0aebbf2acff Mon Sep 17 00:00:00 2001
|
||||||
|
From: kloun <andrey0bolkonsky@gmail.com>
|
||||||
|
Date: Thu, 4 Jun 2015 17:56:59 +0300
|
||||||
|
Subject: [PATCH] small fix ru translation (cherry picked from commit
|
||||||
|
fcf3f5958e0441c9cc00f035ef6c86c278442366)
|
||||||
|
|
||||||
|
---
|
||||||
|
catalog/systemd.ru.catalog | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/catalog/systemd.ru.catalog b/catalog/systemd.ru.catalog
|
||||||
|
index f99532469a..03eea04c9f 100644
|
||||||
|
--- a/catalog/systemd.ru.catalog
|
||||||
|
+++ b/catalog/systemd.ru.catalog
|
||||||
|
@@ -81,7 +81,7 @@ Documentation: man:core(5)
|
||||||
|
Записан дамп памяти.
|
||||||
|
|
||||||
|
Вероятно, это произошло из-за ошибки, допущенной в коде программы.
|
||||||
|
-Рекомендуется сообщить ее разработчикам о возникшей проблеме.
|
||||||
|
+Рекомендуется сообщить её разработчикам о возникшей проблеме.
|
||||||
|
|
||||||
|
# Subject: A new session @SESSION_ID@ has been created for user @USER_ID@
|
||||||
|
-- 8d45620c1a4348dbb17410da57c60c66
|
||||||
|
@@ -146,7 +146,7 @@ Defined-By: systemd
|
||||||
|
Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
|
||||||
|
|
||||||
|
Все системные службы, запуск которых предписан настройками, были запущены.
|
||||||
|
-Впрочем, это еще не означает, что система в данный момент ничем не занята,
|
||||||
|
+Впрочем, это ещё не означает, что система в данный момент ничем не занята,
|
||||||
|
так как некоторые службы могут продолжать инициализацию даже после того, как
|
||||||
|
отчитались о своем запуске.
|
||||||
|
|
||||||
|
@@ -274,7 +274,7 @@ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
|
||||||
|
столбце файла /etc/fstab, либо в параметре Where= файла конфигурации юнита),
|
||||||
|
не является пустым. Это никак не мешает монтированию, однако ранее находившиеся
|
||||||
|
в нем файлы будут недоступны. Чтобы получить к ним доступ, вы можете вручную
|
||||||
|
-перемонтировать нижележащую файловую систему в другую точку.
|
||||||
|
+перемонтировать эту файловую систему в другую точку.
|
||||||
|
|
||||||
|
# Subject: A virtual machine or container has been started
|
||||||
|
-- 24d8d4452573402496068381a6312df2
|
28
0050-core-mount-skip-incomplete-mountinfo-entries.patch
Normal file
28
0050-core-mount-skip-incomplete-mountinfo-entries.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
From 424873fd1c78edd597a02cbf4a402450369b0905 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Mack <daniel@zonque.org>
|
||||||
|
Date: Thu, 4 Jun 2015 15:39:49 +0200
|
||||||
|
Subject: [PATCH] core/mount: skip incomplete mountinfo entries
|
||||||
|
|
||||||
|
Skip /proc/mountinfo entries for which libmount returns a NULL pointer
|
||||||
|
for 'source' or 'target'. This happened on Semaphore CI's build servers
|
||||||
|
when the test suite is run.
|
||||||
|
|
||||||
|
(cherry picked from commit c0a7f8d3cb757cf750fc6788df0d215f6457c09d)
|
||||||
|
---
|
||||||
|
src/core/mount.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/core/mount.c b/src/core/mount.c
|
||||||
|
index ba1dcf1e85..851b41351e 100644
|
||||||
|
--- a/src/core/mount.c
|
||||||
|
+++ b/src/core/mount.c
|
||||||
|
@@ -1522,6 +1522,9 @@ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
|
||||||
|
options = mnt_fs_get_options(fs);
|
||||||
|
fstype = mnt_fs_get_fstype(fs);
|
||||||
|
|
||||||
|
+ if (!device || !path)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
if (cunescape(device, UNESCAPE_RELAX, &d) < 0)
|
||||||
|
return log_oom();
|
||||||
|
|
@ -0,0 +1,49 @@
|
|||||||
|
From 413b9df4a84291dfeb28133f4b30790b7ad9f903 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrei Borzenkov <arvidjaar@gmail.com>
|
||||||
|
Date: Wed, 3 Jun 2015 20:50:59 +0300
|
||||||
|
Subject: [PATCH] fstab-generator: cescape device name in root-fsck service
|
||||||
|
|
||||||
|
We unescape ExecStart line when parsing it, so escape device name
|
||||||
|
before adding it to unit file.
|
||||||
|
|
||||||
|
fixes #50
|
||||||
|
|
||||||
|
(cherry picked from commit fa05e97257fc54b05e4c272dfc19cea46511b823)
|
||||||
|
---
|
||||||
|
src/shared/generator.c | 10 ++++++++--
|
||||||
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/shared/generator.c b/src/shared/generator.c
|
||||||
|
index 807569a1b8..e58bbea77c 100644
|
||||||
|
--- a/src/shared/generator.c
|
||||||
|
+++ b/src/shared/generator.c
|
||||||
|
@@ -34,9 +34,14 @@
|
||||||
|
static int write_fsck_sysroot_service(const char *dir, const char *what) {
|
||||||
|
const char *unit;
|
||||||
|
_cleanup_free_ char *device = NULL;
|
||||||
|
+ _cleanup_free_ char *escaped;
|
||||||
|
_cleanup_fclose_ FILE *f = NULL;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
+ escaped = cescape(what);
|
||||||
|
+ if (!escaped)
|
||||||
|
+ return log_oom();
|
||||||
|
+
|
||||||
|
unit = strjoina(dir, "/systemd-fsck-root.service");
|
||||||
|
log_debug("Creating %s", unit);
|
||||||
|
|
||||||
|
@@ -61,11 +66,12 @@ static int write_fsck_sysroot_service(const char *dir, const char *what) {
|
||||||
|
"[Service]\n"
|
||||||
|
"Type=oneshot\n"
|
||||||
|
"RemainAfterExit=yes\n"
|
||||||
|
- "ExecStart=" SYSTEMD_FSCK_PATH " %2$s\n"
|
||||||
|
+ "ExecStart=" SYSTEMD_FSCK_PATH " %4$s\n"
|
||||||
|
"TimeoutSec=0\n",
|
||||||
|
program_invocation_short_name,
|
||||||
|
what,
|
||||||
|
- device);
|
||||||
|
+ device,
|
||||||
|
+ escaped);
|
||||||
|
|
||||||
|
r = fflush_and_check(f);
|
||||||
|
if (r < 0)
|
150
0052-logind-Fix-user_elect_display-to-be-more-stable.patch
Normal file
150
0052-logind-Fix-user_elect_display-to-be-more-stable.patch
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
From 75aad3b101548151905d528269ffd2a388955193 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philip Withnall <philip.withnall@collabora.co.uk>
|
||||||
|
Date: Fri, 29 May 2015 10:49:21 +0100
|
||||||
|
Subject: [PATCH] logind: Fix user_elect_display() to be more stable
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The previous implementation of user_elect_display() could easily end up
|
||||||
|
overwriting the user’s valid graphical session with a new TTY session.
|
||||||
|
For example, consider the situation where there is one session:
|
||||||
|
c1, type = SESSION_X11, !stopping, class = SESSION_USER
|
||||||
|
it is initially elected as the user’s display (i.e. u->display = c1).
|
||||||
|
|
||||||
|
If another session is started, on a different VT, the sessions_by_user
|
||||||
|
list becomes:
|
||||||
|
c1, type = SESSION_X11, !stopping, class = SESSION_USER
|
||||||
|
c2, type = SESSION_TTY, !stopping, class = SESSION_USER
|
||||||
|
|
||||||
|
In the previous code, graphical = c1 and text = c2, as expected.
|
||||||
|
However, neither graphical nor text fulfil the conditions for setting
|
||||||
|
u->display = graphical (because neither is better than u->display), so
|
||||||
|
the code falls through to check the text variable. The conditions for
|
||||||
|
this match, as u->display->type != SESSION_TTY (it’s actually
|
||||||
|
SESSION_X11). Hence u->display is set to c2, which is incorrect, because
|
||||||
|
session c1 is still valid.
|
||||||
|
|
||||||
|
Refactor user_elect_display() to use a more explicit filter and
|
||||||
|
pre-order comparison over the sessions. This can be demonstrated to be
|
||||||
|
stable and only ever ‘upgrade’ the session to a more graphical one.
|
||||||
|
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=90769
|
||||||
|
(cherry picked from commit 7ffeb45cc63e1326690fd9461b7a4719a3d4f85c)
|
||||||
|
---
|
||||||
|
src/login/logind-user.c | 90 +++++++++++++++++++++++++++++--------------------
|
||||||
|
1 file changed, 54 insertions(+), 36 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
|
||||||
|
index 71bff96728..2f62e34f63 100644
|
||||||
|
--- a/src/login/logind-user.c
|
||||||
|
+++ b/src/login/logind-user.c
|
||||||
|
@@ -738,54 +738,72 @@ int user_kill(User *u, int signo) {
|
||||||
|
return manager_kill_unit(u->manager, u->slice, KILL_ALL, signo, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static bool
|
||||||
|
+elect_display_filter(Session *s) {
|
||||||
|
+ /* Return true if the session is a candidate for the user’s ‘primary
|
||||||
|
+ * session’ or ‘display’. */
|
||||||
|
+ assert(s);
|
||||||
|
+
|
||||||
|
+ return (s->class == SESSION_USER && !s->stopping);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+elect_display_compare(Session *s1, Session *s2) {
|
||||||
|
+ /* Indexed by SessionType. Lower numbers mean more preferred. */
|
||||||
|
+ const int type_ranks[_SESSION_TYPE_MAX] = {
|
||||||
|
+ [SESSION_UNSPECIFIED] = 0,
|
||||||
|
+ [SESSION_TTY] = -2,
|
||||||
|
+ [SESSION_X11] = -3,
|
||||||
|
+ [SESSION_WAYLAND] = -3,
|
||||||
|
+ [SESSION_MIR] = -3,
|
||||||
|
+ [SESSION_WEB] = -1,
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ /* Calculate the partial order relationship between s1 and s2,
|
||||||
|
+ * returning < 0 if s1 is preferred as the user’s ‘primary session’,
|
||||||
|
+ * 0 if s1 and s2 are equally preferred or incomparable, or > 0 if s2
|
||||||
|
+ * is preferred.
|
||||||
|
+ *
|
||||||
|
+ * s1 or s2 may be NULL. */
|
||||||
|
+ if ((s1 == NULL) != (s2 == NULL))
|
||||||
|
+ return (s1 == NULL) - (s2 == NULL);
|
||||||
|
+
|
||||||
|
+ if (s1->stopping != s2->stopping)
|
||||||
|
+ return s1->stopping - s2->stopping;
|
||||||
|
+
|
||||||
|
+ if ((s1->class != SESSION_USER) != (s2->class != SESSION_USER))
|
||||||
|
+ return (s1->class != SESSION_USER) - (s2->class != SESSION_USER);
|
||||||
|
+
|
||||||
|
+ if ((s1->type == _SESSION_TYPE_INVALID) != (s2->type == _SESSION_TYPE_INVALID))
|
||||||
|
+ return (s1->type == _SESSION_TYPE_INVALID) - (s2->type == _SESSION_TYPE_INVALID);
|
||||||
|
+
|
||||||
|
+ if (s1->type != s2->type)
|
||||||
|
+ return type_ranks[s1->type] - type_ranks[s2->type];
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void user_elect_display(User *u) {
|
||||||
|
- Session *graphical = NULL, *text = NULL, *other = NULL, *s;
|
||||||
|
+ Session *s;
|
||||||
|
|
||||||
|
assert(u);
|
||||||
|
|
||||||
|
/* This elects a primary session for each user, which we call
|
||||||
|
* the "display". We try to keep the assignment stable, but we
|
||||||
|
* "upgrade" to better choices. */
|
||||||
|
+ log_debug("Electing new display for user %s", u->name);
|
||||||
|
|
||||||
|
LIST_FOREACH(sessions_by_user, s, u->sessions) {
|
||||||
|
-
|
||||||
|
- if (s->class != SESSION_USER)
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- if (s->stopping)
|
||||||
|
+ if (!elect_display_filter(s)) {
|
||||||
|
+ log_debug("Ignoring session %s", s->id);
|
||||||
|
continue;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (SESSION_TYPE_IS_GRAPHICAL(s->type))
|
||||||
|
- graphical = s;
|
||||||
|
- else if (s->type == SESSION_TTY)
|
||||||
|
- text = s;
|
||||||
|
- else
|
||||||
|
- other = s;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (graphical &&
|
||||||
|
- (!u->display ||
|
||||||
|
- u->display->class != SESSION_USER ||
|
||||||
|
- u->display->stopping ||
|
||||||
|
- !SESSION_TYPE_IS_GRAPHICAL(u->display->type))) {
|
||||||
|
- u->display = graphical;
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (text &&
|
||||||
|
- (!u->display ||
|
||||||
|
- u->display->class != SESSION_USER ||
|
||||||
|
- u->display->stopping ||
|
||||||
|
- u->display->type != SESSION_TTY)) {
|
||||||
|
- u->display = text;
|
||||||
|
- return;
|
||||||
|
+ if (elect_display_compare(s, u->display) < 0) {
|
||||||
|
+ log_debug("Choosing session %s in preference to %s", s->id, u->display ? u->display->id : "-");
|
||||||
|
+ u->display = s;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- if (other &&
|
||||||
|
- (!u->display ||
|
||||||
|
- u->display->class != SESSION_USER ||
|
||||||
|
- u->display->stopping))
|
||||||
|
- u->display = other;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* const user_state_table[_USER_STATE_MAX] = {
|
24
0053-systemd-bootchart-Trivial-typo-fix-in-warning.patch
Normal file
24
0053-systemd-bootchart-Trivial-typo-fix-in-warning.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
From dde6312a37a8560dbb923ddf450a101b6ebe4966 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gianpaolo Macario <gmacario@gmail.com>
|
||||||
|
Date: Fri, 5 Jun 2015 18:42:36 +0200
|
||||||
|
Subject: [PATCH] systemd-bootchart: Trivial typo fix in warning
|
||||||
|
|
||||||
|
Signed-off-by: Gianpaolo Macario <gmacario@gmail.com>
|
||||||
|
(cherry picked from commit 6aec8359b04ca4aac18f73184cc6a3daec9a3271)
|
||||||
|
---
|
||||||
|
src/bootchart/bootchart.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
|
||||||
|
index 45fab92598..3360bc85be 100644
|
||||||
|
--- a/src/bootchart/bootchart.c
|
||||||
|
+++ b/src/bootchart/bootchart.c
|
||||||
|
@@ -531,7 +531,7 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
/* don't complain when overrun once, happens most commonly on 1st sample */
|
||||||
|
if (overrun > 1)
|
||||||
|
- log_warning("systemd-boochart: sample time overrun %i times\n", overrun);
|
||||||
|
+ log_warning("systemd-bootchart: sample time overrun %i times\n", overrun);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
28
0054-man-systemd.link-explain-random-MAC-addresses.patch
Normal file
28
0054-man-systemd.link-explain-random-MAC-addresses.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
From 928b84917139e42611ea1b71ab8b35bf20d2627b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Gundersen <teg@jklm.no>
|
||||||
|
Date: Mon, 8 Jun 2015 22:30:59 +0200
|
||||||
|
Subject: [PATCH] man: systemd.link - explain random MAC addresses
|
||||||
|
|
||||||
|
Two of the bits in the MAC address are set unconditioanlly, and the rest is randomized,
|
||||||
|
make this clear in the documentation (as it currently read as if it was all random).
|
||||||
|
|
||||||
|
(cherry picked from commit 2e229e0c4c29e8a827be9ffe361741cf5e9aa7af)
|
||||||
|
---
|
||||||
|
man/systemd.link.xml | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/man/systemd.link.xml b/man/systemd.link.xml
|
||||||
|
index 3fac760b01..d9b1879c59 100644
|
||||||
|
--- a/man/systemd.link.xml
|
||||||
|
+++ b/man/systemd.link.xml
|
||||||
|
@@ -229,7 +229,9 @@
|
||||||
|
<para>If the kernel is using a random MAC address,
|
||||||
|
nothing is done. Otherwise, a new address is randomly
|
||||||
|
generated each time the device appears, typically at
|
||||||
|
- boot.</para>
|
||||||
|
+ boot. Either way the random address will have the
|
||||||
|
+ <literal>unicast</literal> and
|
||||||
|
+ <literal>locally administered</literal> bits set.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
36
0055-rules-whitelist-xvd-devices.patch
Normal file
36
0055-rules-whitelist-xvd-devices.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From 1499fac10a20159ec9f57734fa3f9e72a25cb19c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alex Crawford <alex.crawford@coreos.com>
|
||||||
|
Date: Thu, 4 Jun 2015 15:54:35 -0700
|
||||||
|
Subject: [PATCH] rules: whitelist xvd* devices
|
||||||
|
|
||||||
|
Xen disks need to be whitelisted as well.
|
||||||
|
|
||||||
|
(cherry picked from commit bb5c512de22eeb7464f120a01fd1d59e7a4bbb7b)
|
||||||
|
---
|
||||||
|
rules/60-block.rules | 2 +-
|
||||||
|
rules/60-persistent-storage.rules | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rules/60-block.rules b/rules/60-block.rules
|
||||||
|
index a69d648023..c74caca49f 100644
|
||||||
|
--- a/rules/60-block.rules
|
||||||
|
+++ b/rules/60-block.rules
|
||||||
|
@@ -8,4 +8,4 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_
|
||||||
|
ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change"
|
||||||
|
|
||||||
|
# watch metadata changes, caused by tools closing the device node which was opened for writing
|
||||||
|
-ACTION!="remove", SUBSYSTEM=="block", KERNEL=="loop*|nvme*|sd*|vd*", OPTIONS+="watch"
|
||||||
|
+ACTION!="remove", SUBSYSTEM=="block", KERNEL=="loop*|nvme*|sd*|vd*|xvd*", OPTIONS+="watch"
|
||||||
|
diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
|
||||||
|
index 64c5f1cfdd..2daeb6db42 100644
|
||||||
|
--- a/rules/60-persistent-storage.rules
|
||||||
|
+++ b/rules/60-persistent-storage.rules
|
||||||
|
@@ -6,7 +6,7 @@
|
||||||
|
ACTION=="remove", GOTO="persistent_storage_end"
|
||||||
|
|
||||||
|
SUBSYSTEM!="block", GOTO="persistent_storage_end"
|
||||||
|
-KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|bcache*|xvd*", GOTO="persistent_storage_end"
|
||||||
|
+KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*", GOTO="persistent_storage_end"
|
||||||
|
|
||||||
|
# ignore partitions that span the entire disk
|
||||||
|
TEST=="whole_disk", GOTO="persistent_storage_end"
|
@ -1,7 +1,7 @@
|
|||||||
From f6373b7dd7a2b8a8e38c289f289728d289382f29 Mon Sep 17 00:00:00 2001
|
From 3357627f3380e680cbaaaddb9ecf4cd2872d46dd Mon Sep 17 00:00:00 2001
|
||||||
From: Harald Hoyer <harald@redhat.com>
|
From: Harald Hoyer <harald@redhat.com>
|
||||||
Date: Mon, 1 Jun 2015 17:26:27 +0200
|
Date: Mon, 1 Jun 2015 17:26:27 +0200
|
||||||
Subject: [PATCH 4/4] cryptsetup: craft a unique ID with the source device
|
Subject: [PATCH] cryptsetup: craft a unique ID with the source device
|
||||||
|
|
||||||
If cryptsetup is called with a source device as argv[3], then craft the
|
If cryptsetup is called with a source device as argv[3], then craft the
|
||||||
ID for the password agent with a unique device path.
|
ID for the password agent with a unique device path.
|
||||||
@ -18,12 +18,14 @@ With this patch the ID of the ask.XXX ini file looks like this:
|
|||||||
ID=cryptsetup:/dev/block/<maj>:<min>
|
ID=cryptsetup:/dev/block/<maj>:<min>
|
||||||
|
|
||||||
[1] https://github.com/npmccallum/petera
|
[1] https://github.com/npmccallum/petera
|
||||||
|
|
||||||
|
(cherry picked from commit e51b9486d1b59e72c293028fed1384f4e4ef09aa)
|
||||||
---
|
---
|
||||||
src/cryptsetup/cryptsetup.c | 90 +++++++++++++++++++++++++++++----------------
|
src/cryptsetup/cryptsetup.c | 90 +++++++++++++++++++++++++++++----------------
|
||||||
1 file changed, 58 insertions(+), 32 deletions(-)
|
1 file changed, 58 insertions(+), 32 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
|
diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
|
||||||
index a5018f1..5c6c7c0 100644
|
index a5018f13ed..5c6c7c0ed8 100644
|
||||||
--- a/src/cryptsetup/cryptsetup.c
|
--- a/src/cryptsetup/cryptsetup.c
|
||||||
+++ b/src/cryptsetup/cryptsetup.c
|
+++ b/src/cryptsetup/cryptsetup.c
|
||||||
@@ -238,6 +238,23 @@ static void log_glue(int level, const char *msg, void *usrptr) {
|
@@ -238,6 +238,23 @@ static void log_glue(int level, const char *msg, void *usrptr) {
|
||||||
@ -161,6 +163,3 @@ index a5018f1..5c6c7c0 100644
|
|||||||
if (k == -EAGAIN)
|
if (k == -EAGAIN)
|
||||||
continue;
|
continue;
|
||||||
else if (k < 0)
|
else if (k < 0)
|
||||||
--
|
|
||||||
2.4.1
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
From 6b63caf7d6bdded413985906276d023cfb623905 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Harald Hoyer <harald@redhat.com>
|
||||||
|
Date: Tue, 9 Jun 2015 10:32:28 +0200
|
||||||
|
Subject: [PATCH] util:bind_remount_recursive(): handle return 0 of
|
||||||
|
set_consume()
|
||||||
|
|
||||||
|
set_consume() does not return -EEXIST, but 0, in case the key is already
|
||||||
|
in the Set.
|
||||||
|
|
||||||
|
(cherry picked from commit 85d834ae8e7d9e2c28ef8c1388e2913ed8fd0e3b)
|
||||||
|
---
|
||||||
|
src/shared/util.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/shared/util.c b/src/shared/util.c
|
||||||
|
index 57782ba687..26eec38ea6 100644
|
||||||
|
--- a/src/shared/util.c
|
||||||
|
+++ b/src/shared/util.c
|
||||||
|
@@ -5135,7 +5135,7 @@ int bind_remount_recursive(const char *prefix, bool ro) {
|
||||||
|
while ((x = set_steal_first(todo))) {
|
||||||
|
|
||||||
|
r = set_consume(done, x);
|
||||||
|
- if (r == -EEXIST)
|
||||||
|
+ if (r == -EEXIST || r == 0)
|
||||||
|
continue;
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
26
0058-hwdb-add-Logitech-TrackMan-Marble-Wheel-USB.patch
Normal file
26
0058-hwdb-add-Logitech-TrackMan-Marble-Wheel-USB.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From f66d0986462f8d3fe321dc20f6bd9904fc1e6a99 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Tue, 9 Jun 2015 14:32:19 +1000
|
||||||
|
Subject: [PATCH] hwdb: add Logitech TrackMan Marble Wheel USB
|
||||||
|
|
||||||
|
DPI is guesswork, no specs found on the web and calculating DPIs on a
|
||||||
|
trackball is tedious.
|
||||||
|
|
||||||
|
(cherry picked from commit 5967bda0bc9849bceeda393e3cd2ab04f2f25a03)
|
||||||
|
---
|
||||||
|
hwdb/70-mouse.hwdb | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb
|
||||||
|
index 2784b941a1..cfe3579fcd 100644
|
||||||
|
--- a/hwdb/70-mouse.hwdb
|
||||||
|
+++ b/hwdb/70-mouse.hwdb
|
||||||
|
@@ -169,6 +169,8 @@ mouse:usb:v046dpc00e:name:Logitech USB-PS/2 Optical Mouse:
|
||||||
|
mouse:usb:v046dpc01b:name:Logitech USB-PS/2 Optical Mouse:
|
||||||
|
# Logitech USB-PS/2 M-BT58
|
||||||
|
mouse:usb:v046dpc03e:name:Logitech USB-PS/2 Optical Mouse:
|
||||||
|
+# Logitech TrackMan Marble Wheel USB
|
||||||
|
+mouse:usb:v046dpc401:name:Logitech USB-PS/2 Trackball:
|
||||||
|
MOUSE_DPI=400@125
|
||||||
|
|
||||||
|
# Lenovo USB mouse model MO28UOL
|
59
0059-hwdb-update-Logitech-s-unifying-receiver-devices.patch
Normal file
59
0059-hwdb-update-Logitech-s-unifying-receiver-devices.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
From 47211575a9ee7ed50e184bccbf8f3e0ed3c1075f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Wed, 10 Jun 2015 13:53:51 +1000
|
||||||
|
Subject: [PATCH] hwdb: update Logitech's unifying receiver devices
|
||||||
|
|
||||||
|
Since 3.19, the devices have the proper vid/pid and the model number in the
|
||||||
|
name.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
(cherry picked from commit 7a37956eac10c727f562ddcce00d1179d22a67f9)
|
||||||
|
---
|
||||||
|
hwdb/70-mouse.hwdb | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb
|
||||||
|
index cfe3579fcd..6c77b74e53 100644
|
||||||
|
--- a/hwdb/70-mouse.hwdb
|
||||||
|
+++ b/hwdb/70-mouse.hwdb
|
||||||
|
@@ -182,6 +182,7 @@ mouse:usb:v046dpc045:name:Logitech USB-PS/2 Optical Mouse:
|
||||||
|
MOUSE_DPI=600@125
|
||||||
|
|
||||||
|
# Logitech Wireless Mouse M325
|
||||||
|
+mouse:usb:v046dp400a:name:Logitech M325:
|
||||||
|
mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:400a:
|
||||||
|
MOUSE_DPI=600@166
|
||||||
|
MOUSE_WHEEL_CLICK_ANGLE=20
|
||||||
|
@@ -215,8 +216,10 @@ mouse:usb:v046dp1028:name:Logitech M570:
|
||||||
|
MOUSE_DPI=540@167
|
||||||
|
|
||||||
|
# Logitech Wireless Mouse M185
|
||||||
|
+mouse:usb:v046dp4008:name:Logitech M185:
|
||||||
|
mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4008:
|
||||||
|
# Logitech M705 (marathon mouse)
|
||||||
|
+mouse:usb:v046dp101b:name:Logitech M705:
|
||||||
|
mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:101b:
|
||||||
|
MOUSE_DPI=800@166
|
||||||
|
|
||||||
|
@@ -227,6 +230,8 @@ mouse:usb:v046dpc24e:name:Logitech G500s Laser Gaming Mouse:
|
||||||
|
MOUSE_DPI=400@500 *800@500 2000@500
|
||||||
|
|
||||||
|
# Logitech B605 Wireless Mouse (also M505)
|
||||||
|
+mouse:usb:v046dp101d:name:Logitech B605:
|
||||||
|
+mouse:usb:v046dp101d:name:Logitech M505:
|
||||||
|
mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:101d:
|
||||||
|
MOUSE_DPI=900@166
|
||||||
|
|
||||||
|
@@ -255,10 +260,12 @@ mouse:usb:v046dpc069:name:Logitech USB Laser Mouse:
|
||||||
|
MOUSE_DPI=1200@125
|
||||||
|
|
||||||
|
# Logitech T620 (or, the soap)
|
||||||
|
+mouse:usb:v046dp4027:name:Logitech T620:
|
||||||
|
mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4027:
|
||||||
|
MOUSE_DPI=1200@250
|
||||||
|
|
||||||
|
# Logitech ZoneTouch Mouse T400
|
||||||
|
+mouse:usb:v046dp4026:name:Logitech T400:
|
||||||
|
mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4026:
|
||||||
|
MOUSE_DPI=1300@166
|
||||||
|
|
26
0060-keymap-Add-Samsung-NP350V-and-NP670Z.patch
Normal file
26
0060-keymap-Add-Samsung-NP350V-and-NP670Z.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From d9b766a4343cf07a0b4e4ab13401f4aec6e2eece Mon Sep 17 00:00:00 2001
|
||||||
|
From: dslul <laudanidaniele@gmail.com>
|
||||||
|
Date: Wed, 10 Jun 2015 12:18:22 +0200
|
||||||
|
Subject: [PATCH] keymap: Add Samsung NP350V and NP670Z
|
||||||
|
|
||||||
|
typo
|
||||||
|
|
||||||
|
keymap: Add Samsung NP350V and NP670Z
|
||||||
|
(cherry picked from commit ff48c774236967273732a7ee154b4b8e834b4409)
|
||||||
|
---
|
||||||
|
hwdb/60-keyboard.hwdb | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
|
||||||
|
index 9c7e553a41..007c6a809e 100644
|
||||||
|
--- a/hwdb/60-keyboard.hwdb
|
||||||
|
+++ b/hwdb/60-keyboard.hwdb
|
||||||
|
@@ -980,6 +980,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr*
|
||||||
|
KEYBOARD_KEY_a9=! # Fn Lock - Function lock off
|
||||||
|
|
||||||
|
# Series 7 / 9
|
||||||
|
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*350V*:pvr*
|
||||||
|
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*670Z*:pvr*
|
||||||
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
|
||||||
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700G*:pvr*
|
||||||
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34]*:pvr*
|
@ -0,0 +1,24 @@
|
|||||||
|
From 643f845bf882489eeddeeb4d9115b07b39198693 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Wed, 10 Jun 2015 15:51:40 +0200
|
||||||
|
Subject: [PATCH] sd-bus: fix early exit when we lack all data in
|
||||||
|
bus_get_owner_creds_dbus1()
|
||||||
|
|
||||||
|
(cherry picked from commit 3c42e8b281b092b4d10f24c80e21d69b0f232b96)
|
||||||
|
---
|
||||||
|
src/libsystemd/sd-bus/bus-control.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
index 43ddfc651d..b4ca177f76 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
@@ -980,7 +980,7 @@ static int bus_get_owner_creds_dbus1(sd_bus *bus, uint64_t mask, sd_bus_creds **
|
||||||
|
pid_t pid = 0;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
- if (!bus->ucred_valid && !isempty(bus->label))
|
||||||
|
+ if (!bus->ucred_valid && isempty(bus->label))
|
||||||
|
return -ENODATA;
|
||||||
|
|
||||||
|
c = bus_creds_new();
|
139
0062-sd-bus-remove-ucred-parameter-from-bus_message_from_.patch
Normal file
139
0062-sd-bus-remove-ucred-parameter-from-bus_message_from_.patch
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
From 467d26a957ddb9d493a443618edc1ecd78eef15c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Wed, 10 Jun 2015 15:52:14 +0200
|
||||||
|
Subject: [PATCH] sd-bus: remove ucred parameter from bus_message_from_header()
|
||||||
|
since we don't use it anymore
|
||||||
|
|
||||||
|
(cherry picked from commit aa0d0ed6b87d41367fd6c4401472df7d45dd1b13)
|
||||||
|
---
|
||||||
|
src/libsystemd/sd-bus/bus-kernel.c | 1 -
|
||||||
|
src/libsystemd/sd-bus/bus-message.c | 21 +--------------------
|
||||||
|
src/libsystemd/sd-bus/bus-message.h | 2 --
|
||||||
|
src/libsystemd/sd-bus/bus-socket.c | 1 -
|
||||||
|
src/libsystemd/sd-bus/test-bus-gvariant.c | 2 +-
|
||||||
|
src/libsystemd/sd-bus/test-bus-marshal.c | 2 +-
|
||||||
|
6 files changed, 3 insertions(+), 26 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c
|
||||||
|
index d5cc8100ce..b87dba7c43 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-kernel.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-kernel.c
|
||||||
|
@@ -498,7 +498,6 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
|
||||||
|
footer, footer_size,
|
||||||
|
n_bytes,
|
||||||
|
fds, n_fds,
|
||||||
|
- NULL,
|
||||||
|
seclabel, 0, &m);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
|
||||||
|
index 6ee209dd1b..c38b2a5fa5 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-message.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-message.c
|
||||||
|
@@ -435,7 +435,6 @@ int bus_message_from_header(
|
||||||
|
size_t message_size,
|
||||||
|
int *fds,
|
||||||
|
unsigned n_fds,
|
||||||
|
- const struct ucred *ucred,
|
||||||
|
const char *label,
|
||||||
|
size_t extra,
|
||||||
|
sd_bus_message **ret) {
|
||||||
|
@@ -528,23 +527,6 @@ int bus_message_from_header(
|
||||||
|
m->fds = fds;
|
||||||
|
m->n_fds = n_fds;
|
||||||
|
|
||||||
|
- if (ucred) {
|
||||||
|
- m->creds.pid = ucred->pid;
|
||||||
|
- m->creds.euid = ucred->uid;
|
||||||
|
- m->creds.egid = ucred->gid;
|
||||||
|
-
|
||||||
|
- /* Due to namespace translations some data might be
|
||||||
|
- * missing from this ucred record. */
|
||||||
|
- if (m->creds.pid > 0)
|
||||||
|
- m->creds.mask |= SD_BUS_CREDS_PID;
|
||||||
|
-
|
||||||
|
- if (m->creds.euid != UID_INVALID)
|
||||||
|
- m->creds.mask |= SD_BUS_CREDS_EUID;
|
||||||
|
-
|
||||||
|
- if (m->creds.egid != GID_INVALID)
|
||||||
|
- m->creds.mask |= SD_BUS_CREDS_EGID;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if (label) {
|
||||||
|
m->creds.label = (char*) m + ALIGN(sizeof(sd_bus_message)) + ALIGN(extra);
|
||||||
|
memcpy(m->creds.label, label, label_sz + 1);
|
||||||
|
@@ -565,7 +547,6 @@ int bus_message_from_malloc(
|
||||||
|
size_t length,
|
||||||
|
int *fds,
|
||||||
|
unsigned n_fds,
|
||||||
|
- const struct ucred *ucred,
|
||||||
|
const char *label,
|
||||||
|
sd_bus_message **ret) {
|
||||||
|
|
||||||
|
@@ -579,7 +560,7 @@ int bus_message_from_malloc(
|
||||||
|
buffer, length,
|
||||||
|
length,
|
||||||
|
fds, n_fds,
|
||||||
|
- ucred, label,
|
||||||
|
+ label,
|
||||||
|
0, &m);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-message.h b/src/libsystemd/sd-bus/bus-message.h
|
||||||
|
index d784e603dd..088d5b1109 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-message.h
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-message.h
|
||||||
|
@@ -205,7 +205,6 @@ int bus_message_from_header(
|
||||||
|
size_t message_size,
|
||||||
|
int *fds,
|
||||||
|
unsigned n_fds,
|
||||||
|
- const struct ucred *ucred,
|
||||||
|
const char *label,
|
||||||
|
size_t extra,
|
||||||
|
sd_bus_message **ret);
|
||||||
|
@@ -216,7 +215,6 @@ int bus_message_from_malloc(
|
||||||
|
size_t length,
|
||||||
|
int *fds,
|
||||||
|
unsigned n_fds,
|
||||||
|
- const struct ucred *ucred,
|
||||||
|
const char *label,
|
||||||
|
sd_bus_message **ret);
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
index 881efb176a..e00bd3fc55 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
@@ -913,7 +913,6 @@ static int bus_socket_make_message(sd_bus *bus, size_t size) {
|
||||||
|
bus->rbuffer, size,
|
||||||
|
bus->fds, bus->n_fds,
|
||||||
|
NULL,
|
||||||
|
- NULL,
|
||||||
|
&t);
|
||||||
|
if (r < 0) {
|
||||||
|
free(b);
|
||||||
|
diff --git a/src/libsystemd/sd-bus/test-bus-gvariant.c b/src/libsystemd/sd-bus/test-bus-gvariant.c
|
||||||
|
index 992edacb28..22ea00c2fb 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/test-bus-gvariant.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/test-bus-gvariant.c
|
||||||
|
@@ -198,7 +198,7 @@ static void test_marshal(void) {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- assert_se(bus_message_from_malloc(bus, blob, sz, NULL, 0, NULL, NULL, &n) >= 0);
|
||||||
|
+ assert_se(bus_message_from_malloc(bus, blob, sz, NULL, 0, NULL, &n) >= 0);
|
||||||
|
blob = NULL;
|
||||||
|
|
||||||
|
assert_se(bus_message_dump(n, NULL, BUS_MESSAGE_DUMP_WITH_HEADER) >= 0);
|
||||||
|
diff --git a/src/libsystemd/sd-bus/test-bus-marshal.c b/src/libsystemd/sd-bus/test-bus-marshal.c
|
||||||
|
index f8ecadf499..a866a56179 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/test-bus-marshal.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/test-bus-marshal.c
|
||||||
|
@@ -212,7 +212,7 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
m = sd_bus_message_unref(m);
|
||||||
|
|
||||||
|
- r = bus_message_from_malloc(bus, buffer, sz, NULL, 0, NULL, NULL, &m);
|
||||||
|
+ r = bus_message_from_malloc(bus, buffer, sz, NULL, 0, NULL, &m);
|
||||||
|
assert_se(r >= 0);
|
||||||
|
|
||||||
|
bus_message_dump(m, stdout, BUS_MESSAGE_DUMP_WITH_HEADER);
|
@ -0,0 +1,59 @@
|
|||||||
|
From 5e6a495495972f748e69d6ec1a8ba2b78aaa7f5a Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Sun, 24 May 2015 20:20:06 -0400
|
||||||
|
Subject: [PATCH] bus-creds: always set SD_BUS_CREDS_PID when we set pid in the
|
||||||
|
mask
|
||||||
|
|
||||||
|
Also reorder the code a bit to be easier to parse.
|
||||||
|
|
||||||
|
(cherry picked from commit 236f83afa935d6e07fcd5c17b5db7b1cf424267a)
|
||||||
|
---
|
||||||
|
src/core/selinux-access.c | 2 +-
|
||||||
|
src/libsystemd/sd-bus/bus-creds.c | 13 ++++++-------
|
||||||
|
2 files changed, 7 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
|
||||||
|
index 5e9a4a5e02..decd42f95a 100644
|
||||||
|
--- a/src/core/selinux-access.c
|
||||||
|
+++ b/src/core/selinux-access.c
|
||||||
|
@@ -261,7 +261,7 @@ int mac_selinux_generic_access_check(
|
||||||
|
audit_info.path = path;
|
||||||
|
audit_info.cmdline = cl;
|
||||||
|
|
||||||
|
- r = selinux_check_access((security_context_t) scon, fcon, tclass, permission, &audit_info);
|
||||||
|
+ r = selinux_check_access(scon, fcon, tclass, permission, &audit_info);
|
||||||
|
if (r < 0)
|
||||||
|
r = sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "SELinux policy denies access.");
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c
|
||||||
|
index 4d67619cf8..1c365b7fcd 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-creds.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-creds.c
|
||||||
|
@@ -773,11 +773,13 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* Try to retrieve PID from creds if it wasn't passed to us */
|
||||||
|
- if (pid <= 0 && (c->mask & SD_BUS_CREDS_PID))
|
||||||
|
+ if (pid > 0) {
|
||||||
|
+ c->pid = pid;
|
||||||
|
+ c->mask |= SD_BUS_CREDS_PID;
|
||||||
|
+ } else if (c->mask & SD_BUS_CREDS_PID)
|
||||||
|
pid = c->pid;
|
||||||
|
-
|
||||||
|
- /* Without pid we cannot do much... */
|
||||||
|
- if (pid <= 0)
|
||||||
|
+ else
|
||||||
|
+ /* Without pid we cannot do much... */
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* Try to retrieve TID from creds if it wasn't passed to us */
|
||||||
|
@@ -789,9 +791,6 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
|
||||||
|
if (missing == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- c->pid = pid;
|
||||||
|
- c->mask |= SD_BUS_CREDS_PID;
|
||||||
|
-
|
||||||
|
if (tid > 0) {
|
||||||
|
c->tid = tid;
|
||||||
|
c->mask |= SD_BUS_CREDS_TID;
|
155
0064-sd-bus-do-not-use-per-datagram-auxiliary-information.patch
Normal file
155
0064-sd-bus-do-not-use-per-datagram-auxiliary-information.patch
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
From 81eb1e9e46b569992b265e826ffc0218ee3d99dd Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Sat, 6 Jun 2015 18:59:27 -0400
|
||||||
|
Subject: [PATCH] sd-bus: do not use per-datagram auxiliary information
|
||||||
|
|
||||||
|
SELinux information cannot be retrieved this way, since we are
|
||||||
|
using stream unix sockets and SCM_SECURITY does not work for
|
||||||
|
them.
|
||||||
|
|
||||||
|
SCM_CREDENTIALS use dropped to be consistent. We also should
|
||||||
|
get this information at connection time.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1224211
|
||||||
|
"SCM_SECURITY was only added for datagram sockets."
|
||||||
|
|
||||||
|
(cherry picked from commit d868f2a3a1cc97b1e081b7692e80a1182efccda4)
|
||||||
|
---
|
||||||
|
src/libsystemd/sd-bus/bus-socket.c | 80 ++++++--------------------------------
|
||||||
|
1 file changed, 12 insertions(+), 68 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
index e00bd3fc55..ec4fcfbcd3 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
@@ -499,9 +499,7 @@ static int bus_socket_read_auth(sd_bus *b) {
|
||||||
|
void *p;
|
||||||
|
union {
|
||||||
|
struct cmsghdr cmsghdr;
|
||||||
|
- uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) +
|
||||||
|
- CMSG_SPACE(sizeof(struct ucred)) +
|
||||||
|
- CMSG_SPACE(NAME_MAX)]; /*selinux label */
|
||||||
|
+ uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX)];
|
||||||
|
} control;
|
||||||
|
struct cmsghdr *cmsg;
|
||||||
|
bool handle_cmsg = false;
|
||||||
|
@@ -553,8 +551,8 @@ static int bus_socket_read_auth(sd_bus *b) {
|
||||||
|
|
||||||
|
b->rbuffer_size += k;
|
||||||
|
|
||||||
|
- if (handle_cmsg) {
|
||||||
|
- for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) {
|
||||||
|
+ if (handle_cmsg)
|
||||||
|
+ for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg))
|
||||||
|
if (cmsg->cmsg_level == SOL_SOCKET &&
|
||||||
|
cmsg->cmsg_type == SCM_RIGHTS) {
|
||||||
|
int j;
|
||||||
|
@@ -565,31 +563,9 @@ static int bus_socket_read_auth(sd_bus *b) {
|
||||||
|
j = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int);
|
||||||
|
close_many((int*) CMSG_DATA(cmsg), j);
|
||||||
|
return -EIO;
|
||||||
|
-
|
||||||
|
- } else if (cmsg->cmsg_level == SOL_SOCKET &&
|
||||||
|
- cmsg->cmsg_type == SCM_CREDENTIALS &&
|
||||||
|
- cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) {
|
||||||
|
-
|
||||||
|
- /* Ignore bogus data, which we might
|
||||||
|
- * get on socketpair() sockets */
|
||||||
|
- if (((struct ucred*) CMSG_DATA(cmsg))->pid != 0) {
|
||||||
|
- memcpy(&b->ucred, CMSG_DATA(cmsg), sizeof(struct ucred));
|
||||||
|
- b->ucred_valid = true;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- } else if (cmsg->cmsg_level == SOL_SOCKET &&
|
||||||
|
- cmsg->cmsg_type == SCM_SECURITY) {
|
||||||
|
-
|
||||||
|
- size_t l;
|
||||||
|
-
|
||||||
|
- l = cmsg->cmsg_len - CMSG_LEN(0);
|
||||||
|
- if (l > 0) {
|
||||||
|
- memcpy(&b->label, CMSG_DATA(cmsg), l);
|
||||||
|
- b->label[l] = 0;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ } else
|
||||||
|
+ log_debug("Got unexpected auxiliary data with level=%d and type=%d",
|
||||||
|
+ cmsg->cmsg_level, cmsg->cmsg_type);
|
||||||
|
|
||||||
|
r = bus_socket_auth_verify(b);
|
||||||
|
if (r != 0)
|
||||||
|
@@ -599,18 +575,8 @@ static int bus_socket_read_auth(sd_bus *b) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void bus_socket_setup(sd_bus *b) {
|
||||||
|
- int enable;
|
||||||
|
-
|
||||||
|
assert(b);
|
||||||
|
|
||||||
|
- /* Enable SO_PASSCRED + SO_PASSEC. We try this on any
|
||||||
|
- * socket, just in case. */
|
||||||
|
- enable = !b->bus_client;
|
||||||
|
- (void) setsockopt(b->input_fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable));
|
||||||
|
-
|
||||||
|
- enable = !b->bus_client && (b->attach_flags & KDBUS_ATTACH_SECLABEL);
|
||||||
|
- (void) setsockopt(b->input_fd, SOL_SOCKET, SO_PASSSEC, &enable, sizeof(enable));
|
||||||
|
-
|
||||||
|
/* Increase the buffers to 8 MB */
|
||||||
|
fd_inc_rcvbuf(b->input_fd, SNDBUF_SIZE);
|
||||||
|
fd_inc_sndbuf(b->output_fd, SNDBUF_SIZE);
|
||||||
|
@@ -939,9 +905,7 @@ int bus_socket_read_message(sd_bus *bus) {
|
||||||
|
void *b;
|
||||||
|
union {
|
||||||
|
struct cmsghdr cmsghdr;
|
||||||
|
- uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) +
|
||||||
|
- CMSG_SPACE(sizeof(struct ucred)) +
|
||||||
|
- CMSG_SPACE(NAME_MAX)]; /*selinux label */
|
||||||
|
+ uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX)];
|
||||||
|
} control;
|
||||||
|
struct cmsghdr *cmsg;
|
||||||
|
bool handle_cmsg = false;
|
||||||
|
@@ -988,8 +952,8 @@ int bus_socket_read_message(sd_bus *bus) {
|
||||||
|
|
||||||
|
bus->rbuffer_size += k;
|
||||||
|
|
||||||
|
- if (handle_cmsg) {
|
||||||
|
- for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) {
|
||||||
|
+ if (handle_cmsg)
|
||||||
|
+ for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg))
|
||||||
|
if (cmsg->cmsg_level == SOL_SOCKET &&
|
||||||
|
cmsg->cmsg_type == SCM_RIGHTS) {
|
||||||
|
int n, *f;
|
||||||
|
@@ -1014,29 +978,9 @@ int bus_socket_read_message(sd_bus *bus) {
|
||||||
|
memcpy(f + bus->n_fds, CMSG_DATA(cmsg), n * sizeof(int));
|
||||||
|
bus->fds = f;
|
||||||
|
bus->n_fds += n;
|
||||||
|
- } else if (cmsg->cmsg_level == SOL_SOCKET &&
|
||||||
|
- cmsg->cmsg_type == SCM_CREDENTIALS &&
|
||||||
|
- cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) {
|
||||||
|
-
|
||||||
|
- /* Ignore bogus data, which we might
|
||||||
|
- * get on socketpair() sockets */
|
||||||
|
- if (((struct ucred*) CMSG_DATA(cmsg))->pid != 0) {
|
||||||
|
- memcpy(&bus->ucred, CMSG_DATA(cmsg), sizeof(struct ucred));
|
||||||
|
- bus->ucred_valid = true;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- } else if (cmsg->cmsg_level == SOL_SOCKET &&
|
||||||
|
- cmsg->cmsg_type == SCM_SECURITY) {
|
||||||
|
-
|
||||||
|
- size_t l;
|
||||||
|
- l = cmsg->cmsg_len - CMSG_LEN(0);
|
||||||
|
- if (l > 0) {
|
||||||
|
- memcpy(&bus->label, CMSG_DATA(cmsg), l);
|
||||||
|
- bus->label[l] = 0;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ } else
|
||||||
|
+ log_debug("Got unexpected auxiliary data with level=%d and type=%d",
|
||||||
|
+ cmsg->cmsg_level, cmsg->cmsg_type);
|
||||||
|
|
||||||
|
r = bus_socket_read_message_need(bus, &need);
|
||||||
|
if (r < 0)
|
95
0065-sd-bus-store-selinux-context-at-connection-time.patch
Normal file
95
0065-sd-bus-store-selinux-context-at-connection-time.patch
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
From 6829b6250d10c3a6a773374bffc58ec8cc98bc36 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Sat, 6 Jun 2015 21:24:45 -0400
|
||||||
|
Subject: [PATCH] sd-bus: store selinux context at connection time
|
||||||
|
|
||||||
|
This appears to be the right time to do it for SOCK_STREAM
|
||||||
|
unix sockets.
|
||||||
|
|
||||||
|
Also: condition bus_get_owner_creds_dbus1 was reversed. Split
|
||||||
|
it out to a separate variable for clarity and fix.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1224211
|
||||||
|
(cherry picked from commit c4e6556c46cea1b7195cfb81c8cfab8342ebd852)
|
||||||
|
|
||||||
|
Conflicts:
|
||||||
|
src/libsystemd/sd-bus/bus-control.c
|
||||||
|
---
|
||||||
|
src/libsystemd/sd-bus/bus-control.c | 6 ++++--
|
||||||
|
src/libsystemd/sd-bus/bus-internal.h | 2 +-
|
||||||
|
src/libsystemd/sd-bus/bus-socket.c | 7 +++++++
|
||||||
|
src/libsystemd/sd-bus/sd-bus.c | 1 +
|
||||||
|
4 files changed, 13 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
index b4ca177f76..1103903358 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-control.c
|
||||||
|
@@ -979,8 +979,10 @@ static int bus_get_owner_creds_dbus1(sd_bus *bus, uint64_t mask, sd_bus_creds **
|
||||||
|
_cleanup_bus_creds_unref_ sd_bus_creds *c = NULL;
|
||||||
|
pid_t pid = 0;
|
||||||
|
int r;
|
||||||
|
+ bool do_label = bus->label && (mask & SD_BUS_CREDS_SELINUX_CONTEXT);
|
||||||
|
|
||||||
|
- if (!bus->ucred_valid && isempty(bus->label))
|
||||||
|
+ /* Avoid allocating anything if we have no chance of returning useful data */
|
||||||
|
+ if (!bus->ucred_valid && !do_label)
|
||||||
|
return -ENODATA;
|
||||||
|
|
||||||
|
c = bus_creds_new();
|
||||||
|
@@ -1004,7 +1006,7 @@ static int bus_get_owner_creds_dbus1(sd_bus *bus, uint64_t mask, sd_bus_creds **
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!isempty(bus->label) && (mask & SD_BUS_CREDS_SELINUX_CONTEXT)) {
|
||||||
|
+ if (do_label) {
|
||||||
|
c->label = strdup(bus->label);
|
||||||
|
if (!c->label)
|
||||||
|
return -ENOMEM;
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-internal.h b/src/libsystemd/sd-bus/bus-internal.h
|
||||||
|
index 1351938c80..2ee0eabc02 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-internal.h
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-internal.h
|
||||||
|
@@ -261,7 +261,7 @@ struct sd_bus {
|
||||||
|
usec_t auth_timeout;
|
||||||
|
|
||||||
|
struct ucred ucred;
|
||||||
|
- char label[NAME_MAX];
|
||||||
|
+ char *label;
|
||||||
|
|
||||||
|
uint64_t creds_mask;
|
||||||
|
|
||||||
|
diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
index ec4fcfbcd3..1fde95d2e8 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/bus-socket.c
|
||||||
|
@@ -587,10 +587,17 @@ void bus_socket_setup(sd_bus *b) {
|
||||||
|
}
|
||||||
|
|
||||||
|
static void bus_get_peercred(sd_bus *b) {
|
||||||
|
+ int r;
|
||||||
|
+
|
||||||
|
assert(b);
|
||||||
|
|
||||||
|
/* Get the peer for socketpair() sockets */
|
||||||
|
b->ucred_valid = getpeercred(b->input_fd, &b->ucred) >= 0;
|
||||||
|
+
|
||||||
|
+ /* Get the SELinux context of the peer */
|
||||||
|
+ r = getpeersec(b->input_fd, &b->label);
|
||||||
|
+ if (r < 0 && r != -EOPNOTSUPP)
|
||||||
|
+ log_debug_errno(r, "Failed to determine peer security context: %m");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int bus_socket_start_auth_client(sd_bus *b) {
|
||||||
|
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
|
||||||
|
index 214b3d04df..ef0f51be53 100644
|
||||||
|
--- a/src/libsystemd/sd-bus/sd-bus.c
|
||||||
|
+++ b/src/libsystemd/sd-bus/sd-bus.c
|
||||||
|
@@ -116,6 +116,7 @@ static void bus_free(sd_bus *b) {
|
||||||
|
if (b->kdbus_buffer)
|
||||||
|
munmap(b->kdbus_buffer, KDBUS_POOL_SIZE);
|
||||||
|
|
||||||
|
+ free(b->label);
|
||||||
|
free(b->rbuffer);
|
||||||
|
free(b->unique_name);
|
||||||
|
free(b->auth_buffer);
|
85
0066-journald-simplify-context-handling.patch
Normal file
85
0066-journald-simplify-context-handling.patch
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
From 87bfffb29b2379dfffc799f0b148369b49c0c269 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Sat, 6 Jun 2015 21:36:52 -0400
|
||||||
|
Subject: [PATCH] journald: simplify context handling
|
||||||
|
|
||||||
|
By using our homegrown function we can dispense with all the iffdefery.
|
||||||
|
|
||||||
|
(cherry picked from commit 2de56f70941eaf91a4520bf33de47a87ebd8b2cb)
|
||||||
|
---
|
||||||
|
src/journal/journald-stream.c | 32 ++++++++------------------------
|
||||||
|
1 file changed, 8 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
|
||||||
|
index b572147a56..db2f581972 100644
|
||||||
|
--- a/src/journal/journald-stream.c
|
||||||
|
+++ b/src/journal/journald-stream.c
|
||||||
|
@@ -59,10 +59,7 @@ struct StdoutStream {
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
struct ucred ucred;
|
||||||
|
-#ifdef HAVE_SELINUX
|
||||||
|
- security_context_t security_context;
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
+ char *label;
|
||||||
|
char *identifier;
|
||||||
|
char *unit_id;
|
||||||
|
int priority;
|
||||||
|
@@ -99,12 +96,7 @@ void stdout_stream_free(StdoutStream *s) {
|
||||||
|
}
|
||||||
|
|
||||||
|
safe_close(s->fd);
|
||||||
|
-
|
||||||
|
-#ifdef HAVE_SELINUX
|
||||||
|
- if (s->security_context)
|
||||||
|
- freecon(s->security_context);
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
+ free(s->label);
|
||||||
|
free(s->identifier);
|
||||||
|
free(s->unit_id);
|
||||||
|
free(s->state_file);
|
||||||
|
@@ -225,8 +217,7 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
|
||||||
|
char syslog_facility[sizeof("SYSLOG_FACILITY=")-1 + DECIMAL_STR_MAX(int) + 1];
|
||||||
|
_cleanup_free_ char *message = NULL, *syslog_identifier = NULL;
|
||||||
|
unsigned n = 0;
|
||||||
|
- char *label = NULL;
|
||||||
|
- size_t label_len = 0;
|
||||||
|
+ size_t label_len;
|
||||||
|
|
||||||
|
assert(s);
|
||||||
|
assert(p);
|
||||||
|
@@ -271,14 +262,8 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
|
||||||
|
if (message)
|
||||||
|
IOVEC_SET_STRING(iovec[n++], message);
|
||||||
|
|
||||||
|
-#ifdef HAVE_SELINUX
|
||||||
|
- if (s->security_context) {
|
||||||
|
- label = (char*) s->security_context;
|
||||||
|
- label_len = strlen((char*) s->security_context);
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
- server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, label, label_len, s->unit_id, priority, 0);
|
||||||
|
+ label_len = s->label ? strlen(s->label) : 0;
|
||||||
|
+ server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, s->label, label_len, s->unit_id, priority, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -489,12 +474,11 @@ static int stdout_stream_install(Server *s, int fd, StdoutStream **ret) {
|
||||||
|
if (r < 0)
|
||||||
|
return log_error_errno(r, "Failed to determine peer credentials: %m");
|
||||||
|
|
||||||
|
-#ifdef HAVE_SELINUX
|
||||||
|
if (mac_selinux_use()) {
|
||||||
|
- if (getpeercon(fd, &stream->security_context) < 0 && errno != ENOPROTOOPT)
|
||||||
|
- log_error_errno(errno, "Failed to determine peer security context: %m");
|
||||||
|
+ r = getpeersec(fd, &stream->label);
|
||||||
|
+ if (r < 0 && r != -EOPNOTSUPP)
|
||||||
|
+ (void) log_warning_errno(r, "Failed to determine peer security context: %m");
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
(void) shutdown(fd, SHUT_WR);
|
||||||
|
|
25
0067-Fix-typo.patch
Normal file
25
0067-Fix-typo.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 84dcb29829e6b4ee85682ded36a727b1b3f11918 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Wed, 10 Jun 2015 11:06:00 -0400
|
||||||
|
Subject: [PATCH] Fix typo
|
||||||
|
|
||||||
|
Follow up for 7c918141ed.
|
||||||
|
|
||||||
|
(cherry picked from commit 2fb1105c2bb91c12dd4e66117626da3546afff84)
|
||||||
|
---
|
||||||
|
src/run/run.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/run/run.c b/src/run/run.c
|
||||||
|
index fcd6b06f7d..d7b1c58455 100644
|
||||||
|
--- a/src/run/run.c
|
||||||
|
+++ b/src/run/run.c
|
||||||
|
@@ -67,7 +67,7 @@ static void help(void) {
|
||||||
|
printf("%s [OPTIONS...] {COMMAND} [ARGS...]\n\n"
|
||||||
|
"Run the specified command in a transient scope or service or timer\n"
|
||||||
|
"unit. If timer option is specified and unit is exist which is\n"
|
||||||
|
- "specified with --unit option then command can be ommited.\n\n"
|
||||||
|
+ "specified with --unit option then command can be omited.\n\n"
|
||||||
|
" -h --help Show this help\n"
|
||||||
|
" --version Show package version\n"
|
||||||
|
" --user Run as user unit\n"
|
94
systemd.spec
94
systemd.spec
@ -38,28 +38,77 @@ Source8: systemd-journal-gatewayd.xml
|
|||||||
# Patch series is available from http://cgit.freedesktop.org/systemd/systemd-stable/log/?h=v220-stable
|
# Patch series is available from http://cgit.freedesktop.org/systemd/systemd-stable/log/?h=v220-stable
|
||||||
# GIT_DIR=~/src/systemd/.git git format-patch-ab -M -N --no-signature v220..v220-stable
|
# GIT_DIR=~/src/systemd/.git git format-patch-ab -M -N --no-signature v220..v220-stable
|
||||||
# i=1; for p in 0*patch;do printf "Patch%04d: %s\n" $i $p; ((i++));done
|
# i=1; for p in 0*patch;do printf "Patch%04d: %s\n" $i $p; ((i++));done
|
||||||
|
Patch0001: 0001-NEWS-fix-date.patch
|
||||||
|
Patch0002: 0002-udev-net_id-Only-read-the-first-64-bytes-of-PCI-conf.patch
|
||||||
|
Patch0003: 0003-bootctl-ferror-must-be-called-before-FILE-is-closed.patch
|
||||||
|
Patch0004: 0004-fix-typos-in-systemd-nspawn-man-page.patch
|
||||||
|
Patch0005: 0005-bootctl-fix-an-error-check.patch
|
||||||
|
Patch0006: 0006-udevd-event-fix-event-queue-in-daemenozied-mode.patch
|
||||||
|
Patch0007: 0007-nspawn-be-verbose-about-interface-names.patch
|
||||||
|
Patch0008: 0008-shared-generator-correct-path-to-systemd-fsck.patch
|
||||||
|
Patch0009: 0009-networkd-fix-IFF_UP-when-ipv6-support-is-disabled.patch
|
||||||
|
Patch0010: 0010-import-dkr-avoid-NULL-pointer-dereference.patch
|
||||||
|
Patch0011: 0011-treewide-fix-typos.patch
|
||||||
|
Patch0012: 0012-logind-unlink-run-nologin-when-shutdown-is-cancelled.patch
|
||||||
|
Patch0013: 0013-missing-add-more-IFLA_VXLAN_-defines.patch
|
||||||
|
Patch0014: 0014-udevd-fix-SIGCHLD-handling-in-daemon-mode.patch
|
||||||
|
Patch0015: 0015-sd-device-fix-device_get_properties_strv.patch
|
||||||
|
Patch0016: 0016-man-fix-systemd.resource-control-5-volume-number.patch
|
||||||
|
Patch0017: 0017-sd-device-enumerator-fix-matching-on-properties-and-.patch
|
||||||
|
Patch0018: 0018-build-sys-fix-typo.patch
|
||||||
|
Patch0019: 0019-path-util-Fix-path_is_mount_point-for-files.patch
|
||||||
|
Patch0020: 0020-rules-fix-typo-in-block-watch-rule.patch
|
||||||
|
Patch0021: 0021-rules-restore-block-watch-after-CHANGE-events.patch
|
||||||
|
Patch0022: 0022-zsh-completion-update-bootctl.patch
|
||||||
|
Patch0023: 0023-README-fix-typo.patch
|
||||||
|
Patch0024: 0024-networkctl-fix-uninitialized-variable.patch
|
||||||
|
Patch0025: 0025-conf-parser-parsing-error-logs-should-show-a-type-no.patch
|
||||||
|
Patch0026: 0026-core-namespace-Protect-usr-instead-of-home-with-Prot.patch
|
||||||
|
Patch0027: 0027-udev-Bring-back-persistant-storage-symlinks-for-bcac.patch
|
||||||
|
Patch0028: 0028-sd-device-fix-invalid-property-strv-pointers.patch
|
||||||
|
Patch0029: 0029-zsh-completion-fix-typo-in-_bootctl.patch
|
||||||
|
Patch0030: 0030-load-fragment-use-UNESCAPE_RELAX-flag-to-parse-exec-.patch
|
||||||
|
Patch0031: 0031-test-unit-file-add-test-for-improperly-escaped-exec-.patch
|
||||||
|
Patch0032: 0032-Separate-the-sign-from-the-number.patch
|
||||||
|
Patch0033: 0033-zsh-completion-fix-completion-of-user-services.patch
|
||||||
|
Patch0034: 0034-zsh-completion-a-more-style-tag-aware-_systemctl.patch
|
||||||
|
Patch0035: 0035-missing-add-more-btrfs-defines.patch
|
||||||
|
Patch0036: 0036-hwdb-Update-database-of-Bluetooth-company-identifier.patch
|
||||||
|
Patch0037: 0037-hwdb-update.patch
|
||||||
|
Patch0038: 0038-README-update-links-to-reference-new-home-GitHub.patch
|
||||||
|
Patch0039: 0039-point-to-github-issues-instead-of-freedesktop-bugzil.patch
|
||||||
|
Patch0040: 0040-configure.ac-add-missing-komma.patch
|
||||||
|
Patch0041: 0041-util-fix-another-cunescape-regression.patch
|
||||||
|
Patch0042: 0042-test-unit-file.c-fixup-the-test-for-commit-3b51f8ddd.patch
|
||||||
|
Patch0043: 0043-systemctl-Use-usr-bin-editor-if-available.patch
|
||||||
|
Patch0044: 0044-libudev-enumerate-accept-NULL-parameters-in-add_matc.patch
|
||||||
|
Patch0045: 0045-Add-dev-xvd-to-60-persistent-storage-whitelist.patch
|
||||||
|
Patch0046: 0046-hwdb-add-Apple-MagicMouse-entry.patch
|
||||||
|
Patch0047: 0047-logind-Add-a-udev-rule-to-tag-all-DRM-cards-with-mas.patch
|
||||||
|
Patch0048: 0048-logind-Save-the-user-s-state-when-a-session-enters-S.patch
|
||||||
|
Patch0049: 0049-small-fix-ru-translation.patch
|
||||||
|
Patch0050: 0050-core-mount-skip-incomplete-mountinfo-entries.patch
|
||||||
|
Patch0051: 0051-fstab-generator-cescape-device-name-in-root-fsck-ser.patch
|
||||||
|
Patch0052: 0052-logind-Fix-user_elect_display-to-be-more-stable.patch
|
||||||
|
Patch0053: 0053-systemd-bootchart-Trivial-typo-fix-in-warning.patch
|
||||||
|
Patch0054: 0054-man-systemd.link-explain-random-MAC-addresses.patch
|
||||||
|
Patch0055: 0055-rules-whitelist-xvd-devices.patch
|
||||||
|
Patch0056: 0056-cryptsetup-craft-a-unique-ID-with-the-source-device.patch
|
||||||
|
Patch0057: 0057-util-bind_remount_recursive-handle-return-0-of-set_c.patch
|
||||||
|
Patch0058: 0058-hwdb-add-Logitech-TrackMan-Marble-Wheel-USB.patch
|
||||||
|
Patch0059: 0059-hwdb-update-Logitech-s-unifying-receiver-devices.patch
|
||||||
|
Patch0060: 0060-keymap-Add-Samsung-NP350V-and-NP670Z.patch
|
||||||
|
Patch0061: 0061-sd-bus-fix-early-exit-when-we-lack-all-data-in-bus_g.patch
|
||||||
|
Patch0062: 0062-sd-bus-remove-ucred-parameter-from-bus_message_from_.patch
|
||||||
|
Patch0063: 0063-bus-creds-always-set-SD_BUS_CREDS_PID-when-we-set-pi.patch
|
||||||
|
Patch0064: 0064-sd-bus-do-not-use-per-datagram-auxiliary-information.patch
|
||||||
|
Patch0065: 0065-sd-bus-store-selinux-context-at-connection-time.patch
|
||||||
|
Patch0066: 0066-journald-simplify-context-handling.patch
|
||||||
|
Patch0067: 0067-Fix-typo.patch
|
||||||
|
|
||||||
# kernel-install patch for grubby, drop if grubby is obsolete
|
# kernel-install patch for grubby, drop if grubby is obsolete
|
||||||
Patch1000: kernel-install-grubby.patch
|
Patch1000: kernel-install-grubby.patch
|
||||||
|
|
||||||
# Fix udev --daemon crash:
|
|
||||||
# http://comments.gmane.org/gmane.comp.sysutils.systemd.devel/32067
|
|
||||||
# This is upstream commit 040e689654ef08.
|
|
||||||
Patch1001: 0001-udevd-event-fix-event-queue-in-daemenozied-mode.patch
|
|
||||||
|
|
||||||
# Fix udev --daemon not cleaning child processes:
|
|
||||||
# https://www.mail-archive.com/systemd-devel@lists.freedesktop.org/msg31806.html
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1225641
|
|
||||||
# This is upstream commit 86c3bece38bcf5.
|
|
||||||
Patch1002: 0001-udevd-fix-SIGCHLD-handling-in-daemon-mode.patch
|
|
||||||
|
|
||||||
# Add support for petera disk encryption
|
|
||||||
Patch1003: 0004-cryptsetup-craft-a-unique-ID-with-the-source-device.patch
|
|
||||||
|
|
||||||
# Fix udev block device watch
|
|
||||||
Patch1004: 0005-rules-fix-typo-in-block-watch-rule.patch
|
|
||||||
Patch1005: 0006-rules-restore-block-watch-after-CHANGE-events.patch
|
|
||||||
|
|
||||||
%global num_patches %{lua: c=0; for i,p in ipairs(patches) do c=c+1; end; print(c);}
|
%global num_patches %{lua: c=0; for i,p in ipairs(patches) do c=c+1; end; print(c);}
|
||||||
|
|
||||||
BuildRequires: libcap-devel
|
BuildRequires: libcap-devel
|
||||||
@ -832,7 +881,14 @@ getent passwd systemd-journal-upload >/dev/null 2>&1 || useradd -r -l -g systemd
|
|||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Tue Jun 9 2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 220-8
|
* Tue Jun 9 2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 220-8
|
||||||
- Remove gudev
|
- Remove gudev which is now provided as separate package (libgudev)
|
||||||
|
- Fix for spurious selinux denials (#1224211)
|
||||||
|
- Udev change events (#1225905)
|
||||||
|
- Patches for some potential crashes
|
||||||
|
- ProtectSystem=yes does not touch /home
|
||||||
|
- Man page fixes, hwdb updates, shell completion updates
|
||||||
|
- Restored persistent device symlinks for bcache, xen block devices
|
||||||
|
- Tag all DRM cards as master-of-seat
|
||||||
|
|
||||||
* Tue Jun 09 2015 Harald Hoyer <harald@redhat.com> 220-7
|
* Tue Jun 09 2015 Harald Hoyer <harald@redhat.com> 220-7
|
||||||
- fix udev block device watch
|
- fix udev block device watch
|
||||||
|
Loading…
Reference in New Issue
Block a user