commit systemd for openSUSE:Factory
Hello community, here is the log from the commit of package systemd for openSUSE:Factory checked in at 2014-05-06 13:39:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/systemd (Old) and /work/SRC/openSUSE:Factory/.systemd.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "systemd" Changes: -------- --- /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes 2014-05-02 20:51:27.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes 2014-05-06 13:39:47.000000000 +0200 @@ -1,0 +2,11 @@ +Mon May 5 14:02:16 UTC 2014 - werner@suse.de + +- Port upstream patch + 0001-sd-rtnl-message-append-fix-uninitialized-memory.patch + back to 210 +- Add patch keep-crypt-password-prompt.patch from Thomas Blume + to fix bnc#875502 - fails to boot when swap space is encrypted +- Port upstream patch set for net_id back in patch + upstream-net_id-changes.patch + +------------------------------------------------------------------- systemd.changes: same change New: ---- 0001-sd-rtnl-message-append-fix-uninitialized-memory.patch keep-crypt-password-prompt.patch upstream-net_id-changes.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ systemd-mini.spec ++++++ --- /var/tmp/diff_new_pack.HU7dku/_old 2014-05-06 13:39:50.000000000 +0200 +++ /var/tmp/diff_new_pack.HU7dku/_new 2014-05-06 13:39:50.000000000 +0200 @@ -399,6 +399,10 @@ Patch203: respect-nfs-bg-option.patch # PATCH-FIX-UPSTREAM Stop useless messages on dual_timestamp_is_set is failed. Patch204: shut-up-annoying-assertion-monotonic-clock-message.patch +# PATCH-FIX-SUSE Do not override the passphrase prompts due messages of busy jobs +Patch205: keep-crypt-password-prompt.patch +# PATCH-FIX-UPSTREAM Fix uninitialized memory +Patch206: 0001-sd-rtnl-message-append-fix-uninitialized-memory.patch # UDEV PATCHES # ============ @@ -432,6 +436,8 @@ Patch1012: 1012-Skip-persistent-device-link-creation-on-multipath-de.patch # PATCH-FIX-SUSE Do not use runtime PM for some IBM consoles (bnc#868931) Patch1013: 1013-no-runtime-PM-for-IBM-consoles.patch +# PATCH-FIX-UPSTREAM Move forward to git Head for net_id +Patch1014: upstream-net_id-changes.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -784,6 +790,8 @@ %patch202 -p0 %patch203 -p1 %patch204 -p1 +%patch205 -p1 +%patch206 -p0 # udev patches %patch1001 -p1 @@ -800,6 +808,9 @@ %patch1011 -p1 %patch1012 -p1 %patch1013 -p1 +%if 0%{?suse_version} > 1310 +%patch1014 -p0 +%endif # ensure generate files are removed rm -f units/emergency.service systemd.spec: same change ++++++ 0001-sd-rtnl-message-append-fix-uninitialized-memory.patch ++++++ Backport of 7ca1d31964a2553f7bd011bc10ac42e0ebc1f975 Mon Sep 17 00:00:00 2001 From: Tom Gundersen <teg@jklm.no> Date: Fri, 2 May 2014 22:29:18 +0200 Subject: [PATCH] sd-rtnl-message: append - fix uninitialized memory We were not properly clearing the padding at the front of some containers. --- src/libsystemd/sd-rtnl/rtnl-message.c | 42 +++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 15 deletions(-) --- src/libsystemd/sd-rtnl/rtnl-message.c +++ src/libsystemd/sd-rtnl/rtnl-message.c 2014-05-05 13:33:01.998235340 +0000 @@ -314,24 +314,28 @@ int sd_rtnl_message_link_get_flags(sd_rt /* If successful the updated message will be correctly aligned, if unsuccessful the old message is untouched. */ static int add_rtattr(sd_rtnl_message *m, unsigned short type, const void *data, size_t data_length) { - uint32_t rta_length, message_length; + uint32_t rta_length; + size_t message_length, padding_length; struct nlmsghdr *new_hdr; struct rtattr *rta; char *padding; unsigned i; + int offset; assert(m); assert(m->hdr); assert(!m->sealed); assert(NLMSG_ALIGN(m->hdr->nlmsg_len) == m->hdr->nlmsg_len); - assert(!data || data_length > 0); - assert(data || m->n_containers < RTNL_CONTAINER_DEPTH); + assert(!data || data_length); + + /* get offset of the new attribute */ + offset = m->hdr->nlmsg_len; /* get the size of the new rta attribute (with padding at the end) */ rta_length = RTA_LENGTH(data_length); /* get the new message size (with padding at the end) */ - message_length = m->hdr->nlmsg_len + RTA_ALIGN(rta_length); + message_length = offset + RTA_ALIGN(rta_length); /* realloc to fit the new attribute */ new_hdr = realloc(m->hdr, message_length); @@ -340,32 +344,35 @@ static int add_rtattr(sd_rtnl_message *m m->hdr = new_hdr; /* get pointer to the attribute we are about to add */ - rta = (struct rtattr *) ((uint8_t *) m->hdr + m->hdr->nlmsg_len); + rta = (struct rtattr *) ((uint8_t *) m->hdr + offset); /* if we are inside containers, extend them */ for (i = 0; i < m->n_containers; i++) - GET_CONTAINER(m, i)->rta_len += message_length - m->hdr->nlmsg_len; + GET_CONTAINER(m, i)->rta_len += message_length - offset; /* fill in the attribute */ rta->rta_type = type; rta->rta_len = rta_length; - if (!data) { - /* this is the start of a new container */ - m->container_offsets[m->n_containers ++] = m->hdr->nlmsg_len; - } else { + if (data) /* we don't deal with the case where the user lies about the type * and gives us too little data (so don't do that) - */ + */ padding = mempcpy(RTA_DATA(rta), data, data_length); - /* make sure also the padding at the end of the message is initialized */ - memzero(padding, - (uint8_t *) m->hdr + message_length - (uint8_t *) padding); + else { + /* if no data was passed, make sure we still initialize the padding + note that we can have data_length > 0 (used by some containers) */ + padding = RTA_DATA(rta); + data_length = 0; } + /* make sure also the padding at the end of the message is initialized */ + padding_length = (uint8_t*)m->hdr + message_length - (uint8_t*)padding; + memzero(padding, padding_length); + /* update message size */ m->hdr->nlmsg_len = message_length; - return 0; + return offset; } int sd_rtnl_message_append_string(sd_rtnl_message *m, unsigned short type, const char *data) { @@ -498,6 +505,7 @@ int sd_rtnl_message_append_u32(sd_rtnl_m assert_return(m, -EINVAL); assert_return(!m->sealed, -EPERM); + assert_return(m->n_containers < RTNL_CONTAINER_DEPTH, -ERANGE); r = sd_rtnl_message_get_type(m, &rtm_type); if (r < 0) @@ -548,6 +556,10 @@ int sd_rtnl_message_append_u32(sd_rtnl_m if (r < 0) return r; + m->container_offsets[m->n_containers ++] = r; + + m->container_offsets[m->n_containers ++] = r; + return 0; } ++++++ keep-crypt-password-prompt.patch ++++++ --- systemd-210/src/core/manager.c 2014-05-05 11:46:17.700483956 +0200 +++ systemd-210/src/core/manager.c 2014-05-05 13:29:13.296503646 +0200 @@ -152,6 +152,29 @@ } } +static int check_for_password_prompt(void) { + DIR *d; + struct dirent *de; + + if (!(d = opendir("/run/systemd/ask-password"))) { + log_error("opendir(): %m"); + + if (errno == ENOENT) + return 1; + + return -errno; + } + + while ((de = readdir(d))) { + if (startswith(de->d_name, "ask.")) { + closedir(d); + return 0; + } + } + closedir(d); + return 1; +} + static void manager_print_jobs_in_progress(Manager *m) { static int is_ansi_console = -1; _cleanup_free_ char *job_of_n = NULL; @@ -195,6 +217,10 @@ m->jobs_in_progress_iteration++; + //don't overwrite the crypt password prompt with job status messages + if (check_for_password_prompt() == 0); + return 0; + if (m->n_running_jobs > 1) if (asprintf(&job_of_n, "(%u of %u) ", counter, m->n_running_jobs) < 0) job_of_n = NULL; ++++++ upstream-net_id-changes.patch ++++++ This the diff between systemd-210 and 19aa72f74e41045510b4af3f1415b419d42ff20b But we do not remove the ATA support as in HEAD --- src/udev/udev-builtin-net_id.c | 54 ++++++---------------------------------- src/udev/udev-builtin-path_id.c | 3 -- 2 files changed, 9 insertions(+), 48 deletions(-) --- src/udev/udev-builtin-net_id.c +++ src/udev/udev-builtin-net_id.c 2014-04-08 07:16:45.094235605 +0000 @@ -33,6 +33,8 @@ * ww -- wwan * * Type of names: + * b<number> -- BCMA bus core number + * ccw<name> -- CCW bus group name * o<index> -- on-board device index number * s<slot>[f<function>][d<dev_id>] -- hotplug slot index number * x<MAC> -- MAC address @@ -92,6 +94,7 @@ #include <string.h> #include <errno.h> #include <net/if.h> +#include <net/if_arp.h> #include <linux/pci_regs.h> #include "udev.h" @@ -119,12 +122,8 @@ struct netnames { const char *pci_onboard_label; char usb_ports[IFNAMSIZ]; - char bcma_core[IFNAMSIZ]; - - char virtio_core[IFNAMSIZ]; - - char ccw_core[IFNAMSIZ]; + char ccw_group[IFNAMSIZ]; }; /* retrieve on-board index number and label from firmware */ @@ -351,25 +350,6 @@ static int names_bcma(struct udev_device return 0; } -static int names_virtio(struct udev_device *dev, struct netnames *names) { - struct udev_device *virtdev; - unsigned int core; - - virtdev = udev_device_get_parent_with_subsystem_devtype(dev, "virtio", NULL); - if (!virtdev) - return -ENOENT; - - /* core num */ - if (sscanf(udev_device_get_sysname(virtdev), "virtio%u", &core) != 1) - return -EINVAL; - /* suppress the common core == 0 */ - if (core > 0) - snprintf(names->virtio_core, sizeof(names->virtio_core), "v%u", core); - - names->type = NET_VIRTIO; - return 0; -} - static int names_ccw(struct udev_device *dev, struct netnames *names) { struct udev_device *cdev; const char *bus_id; @@ -402,8 +382,8 @@ static int names_ccw(struct udev_device return -EINVAL; /* Store the CCW bus-ID for use as network device name */ - rc = snprintf(names->ccw_core, sizeof(names->ccw_core), "ccw%s", bus_id); - if (rc >= 0 && rc < (int)sizeof(names->ccw_core)) + rc = snprintf(names->ccw_group, sizeof(names->ccw_group), "ccw%s", bus_id); + if (rc >= 0 && rc < (int)sizeof(names->ccw_group)) names->type = NET_CCWGROUP; return 0; } @@ -472,10 +452,10 @@ static int builtin_net_id(struct udev_de return EXIT_FAILURE; i = strtoul(s, NULL, 0); switch (i) { - case 1: /* ARPHRD_ETHER */ + case ARPHRD_ETHER: prefix = "en"; break; - case 256: /* ARPHRD_SLIP */ + case ARPHRD_SLIP: prefix = "sl"; break; default: @@ -517,7 +497,7 @@ static int builtin_net_id(struct udev_de if (err >= 0 && names.type == NET_CCWGROUP) { char str[IFNAMSIZ]; - if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_core) < (int)sizeof(str)) + if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_group) < (int)sizeof(str)) udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str); goto out; } @@ -578,22 +558,6 @@ static int builtin_net_id(struct udev_de udev_builtin_add_property(dev, test, "ID_NET_NAME_SLOT", str); goto out; } - - /* virtio bus */ - err = names_virtio(dev, &names); - if (err >= 0 && names.type == NET_VIRTIO) { - char str[IFNAMSIZ]; - - if (names.pci_path[0]) - if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_path, names.virtio_core) < (int)sizeof(str)) - udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str); - - if (names.pci_slot[0]) - if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_slot, names.virtio_core) < (int)sizeof(str)) - udev_builtin_add_property(dev, test, "ID_NET_NAME_SLOT", str); - goto out; - } - out: return EXIT_SUCCESS; } --- src/udev/udev-builtin-path_id.c +++ src/udev/udev-builtin-path_id.c 2014-03-28 09:27:20.402735390 +0000 @@ -571,9 +571,6 @@ static int builtin_path_id(struct udev_d } else if (streq(subsys, "xen")) { path_prepend(&path, "xen-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "xen"); - } else if (streq(subsys, "virtio")) { - path_prepend(&path, "virtio-pci-%s", udev_device_get_sysname(parent)); - parent = skip_subsystem(parent, "virtio"); } else if (streq(subsys, "scm")) { path_prepend(&path, "scm-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "scm"); -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de