Hello community, here is the log from the commit of package lxd for openSUSE:Leap:15.2 checked in at 2020-02-01 06:10:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/lxd (Old) and /work/SRC/openSUSE:Leap:15.2/.lxd.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lxd" Sat Feb 1 06:10:18 2020 rev:5 rq:769027 version:3.20 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/lxd/lxd.changes 2020-01-30 06:07:42.090440955 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.lxd.new.26092/lxd.changes 2020-02-01 06:10:24.474784963 +0100 @@ -1,0 +2,19 @@ +Fri Jan 31 10:16:27 UTC 2020 - Aleksa Sarai <asa...@suse.com> + +- Backport https://github.com/canonical/dqlite/pull/207 to fix boo#1156336. + + boo1156336-0001-vfs-vfs__delete-fix-double-unlock-of-root-mutex.patch + +------------------------------------------------------------------- +Fri Jan 31 00:33:47 UTC 2020 - Aleksa Sarai <asa...@suse.com> + +- Update to LXD 3.20. The full upstream changelog is available from: + https://discuss.linuxcontainers.org/t/lxd-3-20-has-been-released/6673 + boo#1162299 + + Server side support of API collections + + New unix-hotplug device type + + Support for standby cluster members +- Update packaging to use GOPATH="_dist" rather than trying to move everything + to vendor/. This is the recommended approach by upstream (and makes our + specfile marginally less horrific). + +------------------------------------------------------------------- Old: ---- lxd-3.19.tar.gz lxd-3.19.tar.gz.asc New: ---- boo1156336-0001-vfs-vfs__delete-fix-double-unlock-of-root-mutex.patch lxd-3.20.tar.gz lxd-3.20.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lxd.spec ++++++ --- /var/tmp/diff_new_pack.AzrH6r/_old 2020-02-01 06:10:25.578785514 +0100 +++ /var/tmp/diff_new_pack.AzrH6r/_new 2020-02-01 06:10:25.578785514 +0100 @@ -23,7 +23,7 @@ %define import_path github.com/lxc/lxd Name: lxd -Version: 3.19 +Version: 3.20 Release: 0 Summary: Container hypervisor based on LXC License: Apache-2.0 @@ -38,10 +38,13 @@ # Additional runtime configuration. Source200: %{name}.sysctl Source201: %{name}.dnsmasq +# FIX-UPSTREAM: Backport of https://github.com/canonical/dqlite/pull/207. boo#1156336 +Patch100: boo1156336-0001-vfs-vfs__delete-fix-double-unlock-of-root-mutex.patch BuildRequires: fdupes BuildRequires: golang-packaging BuildRequires: libacl-devel BuildRequires: libcap-devel +BuildRequires: libudev-devel BuildRequires: patchelf BuildRequires: pkg-config BuildRequires: rsync @@ -87,29 +90,13 @@ %prep %setup -q - -# If there is a vendor/ move it to _dist/src/. -if [ -d vendor ] -then - cp -at _dist/src vendor/* - rm -rf vendor/ -fi -# Move _dist/src (which is LXD's variant of vendoring) to vendor/. -mv -v _dist/src vendor - -# For some reason, some vendored packages have stored their vendored sources -# within their source tree inside the vendor tree (?!). So we need to -# workaround this, even though it's probably a bug in LXD packaging. -for vendor in $(find vendor/* -type d -name vendor) -do - rsync -a "$vendor/" vendor/ - rm -rf "$vendor/" -done +# boo#1156336 +%patch100 -d _dist/deps/dqlite -p1 # Create fake "go mod"-like import paths. This is going to be really fun to # maintain but it's unfortunately necessary because openSUSE doesn't have nice # "go mod" support in OBS... -ln -s . vendor/github.com/cpuguy83/go-md2man/v2 +ln -s . _dist/src/github.com/cpuguy83/go-md2man/v2 %build # Make sure any leftover go build caches are gone. @@ -188,6 +175,9 @@ awk -F: '$1 == "main" { print $2 }' | \ grep -Ev '^github.com/lxc/lxd/(test|shared)')" +# _dist/src is effectively an old-school "vendor/" tree, so add it to GOPATH. +export GOPATH="$GOPATH:$PKGDIR/_dist" + # And now we can finally build LXD and all of the related binaries. mkdir bin for mainpkg in "${mainpkgs[@]}" ++++++ boo1156336-0001-vfs-vfs__delete-fix-double-unlock-of-root-mutex.patch ++++++ >From 13548f8bdb309d18801de9febb8f5829b6b9ae55 Mon Sep 17 00:00:00 2001 From: Aleksa Sarai <cyp...@cyphar.com> Date: Fri, 31 Jan 2020 20:57:47 +1100 Subject: [PATCH] vfs: vfs__delete: fix double-unlock of &root->mutex vfs__delete_contents would unlock the passed &root->mutex, but all of its callers would then also unlock the passed &root->mutex. It turns out that this works on most architectures without issue, but apparently on some Intel CPUs with TSX enabled this will trigger a general protection fault[1,2]. This was the cause of a very frustrating bug where LXD would segfault on start-up[3]. [1]: https://lwn.net/Articles/534758/ [2]: https://software.intel.com/en-us/forums/intel-isa-extensions/topic/675036 [3]: https://bugzilla.opensuse.org/show_bug.cgi?id=1156336 Signed-off-by: Aleksa Sarai <cyp...@cyphar.com> --- src/vfs.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/vfs.c b/src/vfs.c index 3a4c205a1d4a..443a6ad3b980 100644 --- a/src/vfs.c +++ b/src/vfs.c @@ -619,7 +619,6 @@ static int vfs__delete_content(struct root *root, const char *filename) /* Check that there are no consumers of this file. */ if (content->refcount > 0) { root->error = EBUSY; - pthread_mutex_unlock(&root->mutex); rc = SQLITE_IOERR_DELETE; goto err; } @@ -630,8 +629,6 @@ static int vfs__delete_content(struct root *root, const char *filename) /* Reset the file content slot. */ *(root->contents + content_index) = NULL; - pthread_mutex_unlock(&root->mutex); - return SQLITE_OK; err: -- 2.25.0 ++++++ lxd-3.19.tar.gz -> lxd-3.20.tar.gz ++++++ /work/SRC/openSUSE:Leap:15.2/lxd/lxd-3.19.tar.gz /work/SRC/openSUSE:Leap:15.2/.lxd.new.26092/lxd-3.20.tar.gz differ: char 18, line 1