From f7a512ba31993226c0d577039cfcbd787ad7b6fedc6dff30801d9387ce8bf726 Mon Sep 17 00:00:00 2001 From: Mark Post Date: Wed, 22 Feb 2017 23:40:55 +0000 Subject: [PATCH] Accepting request 459916 from openSUSE:Factory:zSystems New fixes from IBM OBS-URL: https://build.opensuse.org/request/show/459916 OBS-URL: https://build.opensuse.org/package/show/Base:System/s390-tools?expand=0&rev=2 --- ...p3-dbginfo-Collect-docker-debug-data.patch | 142 ++++++++++++++++++ ...ee-in-error-path-and-skip-virtual-fs.patch | 65 ++++++++ s390-tools.changes | 7 + s390-tools.spec | 4 + 4 files changed, 218 insertions(+) create mode 100644 s390-tools-sles12sp3-dbginfo-Collect-docker-debug-data.patch create mode 100644 s390-tools-sles12sp3-mon_fsstatd-fix-double-free-in-error-path-and-skip-virtual-fs.patch diff --git a/s390-tools-sles12sp3-dbginfo-Collect-docker-debug-data.patch b/s390-tools-sles12sp3-dbginfo-Collect-docker-debug-data.patch new file mode 100644 index 0000000..d62ad51 --- /dev/null +++ b/s390-tools-sles12sp3-dbginfo-Collect-docker-debug-data.patch @@ -0,0 +1,142 @@ +Subject: [PATCH] [BZ 151594] dbginfo: Collect docker debug output. +From: Karsten Graul + +Description: dbginfo: Collect docker debug output. +Symptom: dbginfo.sh output does not contain docker debug output. +Problem: dbginfo.sh does not collect docker debug output. +Solution: Add invocation of docker debug commands to dbginfo.sh. +Reproduction: - +Upstream-ID: - +Problem-ID: 151594 + +Signed-off-by: Karsten Graul +--- + scripts/dbginfo.sh | 58 +++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 54 insertions(+), 4 deletions(-) + +--- a/scripts/dbginfo.sh ++++ b/scripts/dbginfo.sh +@@ -2,7 +2,7 @@ + # + # dbginfo.sh - Tool to collect runtime, configuration, and trace information + # +-# Copyright IBM Corp. 2002, 2016 ++# Copyright IBM Corp. 2002, 2017 + # + + # Switching to neutral locale +@@ -18,7 +18,7 @@ readonly SCRIPTNAME="${0##*/}" + print_version() { + cat </dev/null | cut -d'.' -f1) +@@ -301,6 +304,8 @@ LOGFILES="\ + /var/log/yum.log\ + /var/log/openvswitch/ovs-vswitchd.log\ + /var/log/openvswitch/ovsdb-server.log\ ++ /var/run/docker/libcontainerd/containerd/events.log\ ++ /run/containerd/events.log\ + " + + ######################################## +@@ -351,6 +356,9 @@ CONFIGFILES="\ + /etc/xinet.d\ + /etc/*release\ + $(find /lib/modules -name modules.dep 2>/dev/null)\ ++ /etc/docker\ ++ /usr/lib/systemd\ ++ /etc/apparmor.d\ + " + + ######################################## +@@ -436,6 +444,16 @@ CMDS="uname -a\ + :systemctl --all --no-pager show\ + :systemctl --all --no-pager list-units\ + :systemctl --all --no-pager list-unit-files\ ++ :docker info\ ++ :docker images\ ++ :docker network ls\ ++ :docker ps\ ++ :docker ps -a\ ++ :docker stats --no-stream\ ++ :docker version\ ++ :systemctl status docker.service\ ++ :df /var/lib/docker\ ++ :df --inodes /var/lib/docker\ + " + + ######################################## +@@ -767,13 +785,43 @@ collect_domain_xml() { + } + + ######################################## ++collect_docker() { ++ local item_list ++ local item ++ ++ # call docker inspect for all containers ++ item_list=$(docker ps -qa) ++ if test -n "${item_list}"; then ++ pr_syslog_stdout "10a of ${COLLECTION_COUNT}: Collecting docker container output" ++ for item in ${item_list}; do ++ call_run_command "docker inspect ${item}" "${OUTPUT_FILE_DOCKER}" ++ done ++ else ++ pr_syslog_stdout "10a of ${COLLECTION_COUNT}: Collecting docker container output skipped" ++ fi ++ ++ # call docker inspect for all networks ++ item_list=$(docker network ls -q) ++ if test -n "${item_list}"; then ++ pr_syslog_stdout "10b of ${COLLECTION_COUNT}: Collecting docker network output" ++ for item in ${item_list}; do ++ call_run_command "docker network inspect ${item}" "${OUTPUT_FILE_DOCKER}" ++ done ++ else ++ pr_syslog_stdout "10b of ${COLLECTION_COUNT}: Collecting docker network output skipped" ++ fi ++ ++ pr_log_stdout " " ++} ++ ++######################################## + post_processing() { + local file_mtime + local file_mtime_epoche + local tmp_file + local file_name + +- pr_syslog_stdout "10 of ${COLLECTION_COUNT}: Postprocessing" ++ pr_syslog_stdout "11 of ${COLLECTION_COUNT}: Postprocessing" + + find "${WORKPATH}etc/libvirt/qemu/" -maxdepth 1 -name "*.xml" 2>/dev/null | while IFS= read -r file_name; do + file_mtime_epoche=$(stat --format=%Y "${file_name}") +@@ -1056,6 +1104,8 @@ collect_ovs + + collect_domain_xml + ++collect_docker ++ + post_processing + + create_package diff --git a/s390-tools-sles12sp3-mon_fsstatd-fix-double-free-in-error-path-and-skip-virtual-fs.patch b/s390-tools-sles12sp3-mon_fsstatd-fix-double-free-in-error-path-and-skip-virtual-fs.patch new file mode 100644 index 0000000..0a5236a --- /dev/null +++ b/s390-tools-sles12sp3-mon_fsstatd-fix-double-free-in-error-path-and-skip-virtual-fs.patch @@ -0,0 +1,65 @@ +Subject: [PATCH] [BZ 151416] mon_fsstatd: fix double free in error path and skip virtual fs +From: Gerald Schaefer + +Description: mon_fsstatd: fix double free in error path and skip virtual fs +Symptom: The daemon is stopped and the following messages can be found + in syslog: "statvfs error on /run/user/0: Permission denied" + and "double free or corruption (!prev)". +Problem: The error handling code for a failing statvfs() call erroneously + does an extra fclose(), conflicting with the later fclose(). + Also, breaking out of the inner loop at this point doesn't make + sense, because there may be other mounted filesystems that would + be skipped. + The reason for the failing statvfs() (on /run/user/0) is a wrong + selinux context (when started via systemctl), and this error will + spam the syslog if we only fix the double free. Since /run/user/0 + is a tmpfs, and mon_fsstatd is supposed to collect only physical + filesystem data, it is wrong to even try to access /run/user/0. +Solution: Remove the extra fclose(), replace the break with a continue, + and add tmpfs (and others) to the list of ignored virtual + filesystems. +Reproduction: Start mon_fsstatd via service/systemctl. +Upstream-ID: - +Problem-ID: 151416 + +Signed-off-by: Gerald Schaefer +--- + mon_tools/mon_fsstatd.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +--- a/mon_tools/mon_fsstatd.c ++++ b/mon_tools/mon_fsstatd.c +@@ -323,16 +323,31 @@ static int fsstatd_do_work(void) + strncmp(ent->mnt_type, "none", 4) == 0 || + strncmp(ent->mnt_type, "proc", 4) == 0 || + strncmp(ent->mnt_type, "subfs", 5) == 0 || ++ strncmp(ent->mnt_type, "nfsd", 4) == 0 || ++ strncmp(ent->mnt_type, "tmpfs", 5) == 0 || ++ strncmp(ent->mnt_type, "sysfs", 5) == 0 || ++ strncmp(ent->mnt_type, "pstore", 6) == 0 || ++ strncmp(ent->mnt_type, "cgroup", 6) == 0 || ++ strncmp(ent->mnt_type, "mqueue", 6) == 0 || ++ strncmp(ent->mnt_type, "devpts", 6) == 0 || ++ strncmp(ent->mnt_type, "debugfs", 7) == 0 || ++ strncmp(ent->mnt_type, "devtmpfs", 8) == 0 || ++ strncmp(ent->mnt_type, "configfs", 8) == 0 || ++ strncmp(ent->mnt_type, "selinuxfs", 9) == 0 || ++ strncmp(ent->mnt_type, "hugetlbfs", 9) == 0 || ++ strncmp(ent->mnt_type, "securityfs", 10) == 0 || ++ strncmp(ent->mnt_type, "rpc_pipefs", 10) == 0 || ++ strncmp(ent->mnt_type, "binfmt_misc", 11) == 0 || + strncmp(ent->mnt_type, "ignore", 6) == 0)) { + ent = getmntent(mnttab); + continue; + } + result = statvfs(ent->mnt_dir, &buf); + if (result != 0) { +- fclose(mnttab); + syslog(LOG_ERR, "statvfs error on %s: %s\n", + ent->mnt_dir, strerror(errno)); +- break; ++ ent = getmntent(mnttab); ++ continue; + } + + if (buf.f_blocks > 0) diff --git a/s390-tools.changes b/s390-tools.changes index e96aa32..0f00fc0 100644 --- a/s390-tools.changes +++ b/s390-tools.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Feb 22 20:29:57 UTC 2017 - mpost@suse.com + +- Added the following patches (bsc#1026474) + - s390-tools-sles12sp3-mon_fsstatd-fix-double-free-in-error-path-and-skip-virtual-fs.patch + - s390-tools-sles12sp3-dbginfo-Collect-docker-debug-data.patch + ------------------------------------------------------------------- Mon Feb 20 17:05:45 UTC 2017 - mpost@suse.com diff --git a/s390-tools.spec b/s390-tools.spec index 4cce35b..a299bf6 100644 --- a/s390-tools.spec +++ b/s390-tools.spec @@ -130,6 +130,8 @@ Patch27: s390-tools-sles12sp3-dasdfmt-08-Make-progress-output-reusable-an Patch28: s390-tools-sles12sp3-dasdfmt-09-Add-command-line-argument-check.patch Patch29: s390-tools-sles12sp3-dasdfmt-10-Add-expand-format-mode.patch Patch30: s390-tools-sles12sp3-util_proc-fix-memory-allocation-error-messages.patch +Patch31: s390-tools-sles12sp3-mon_fsstatd-fix-double-free-in-error-path-and-skip-virtual-fs.patch +Patch32: s390-tools-sles12sp3-dbginfo-Collect-docker-debug-data.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build ExclusiveArch: s390 s390x @@ -216,6 +218,8 @@ to list files and directories. %patch28 -p1 %patch29 -p1 %patch30 -p1 +%patch31 -p1 +%patch32 -p1 cp -vi %{S:22} CAUTION