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


Reply via email to