Steps used to verify the fix (both in focal and groovy):
$ fallocate -l 8G /home/ubuntu/disk.img
$ sudo zpool create pool /home/ubuntu/disk.img
$ for i in {1..20}; do sudo zfs create pool/ds$i; done
$ sudo zfs unmount pool/ds20
$ sudo zfs mount -a & sudo zfs mount -a &
[1] 1964
[2] 1965
ubuntu@groovy:~$ filesystem 'pool/ds20' is already mounted
cannot mount 'pool/ds20': mountpoint or dataset is busy
[1]- Done sudo zfs mount -a
[2]+ Exit 1 sudo zfs mount -a
With the fix applied we should be able to see the error "mountpoint or
dataset is busy", due to the concurrent "zfs mount -a" running. That
means the old behavior has been restored, since it's not a problem
anymore for systemd (and the applied workaround could cause the
segfault).
** Tags removed: verification-needed-focal
** Tags added: verification-done-focal
** Tags removed: verification-needed-groovy
** Tags added: verification-done-groovy
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to zfs-linux in Ubuntu.
https://bugs.launchpad.net/bugs/1902588
Title:
zfs mount -a: double free / memory corruption / segfault when
mountpoint of dataset is not empty
Status in zfs-linux package in Ubuntu:
Fix Released
Status in zfs-linux source package in Xenial:
Invalid
Status in zfs-linux source package in Bionic:
Invalid
Status in zfs-linux source package in Focal:
Fix Committed
Status in zfs-linux source package in Groovy:
Fix Committed
Status in zfs-linux source package in Hirsute:
Fix Released
Bug description:
== SRU Justification Focal ==
zfs mount -a when run on a nonempty mountpoint causes a double free,
memory corruption, and a segfault.
== Impact ==
Double free and memory corruption in ZFS when run as root and
attempting to mount all. While running this I observed other ZFS
volumes randomly unmounting, and mount points owner being spuriously
zeroed (set to root).
== Fix ==
https://github.com/openzfs/zfs/commit/d1b84da8c1a69c084f04b504beefe804591bca07
== Test ==
Steps are laid out in the ZFS issue:
https://github.com/openzfs/zfs/issues/9560
== Regression Potential ==
Limited to the behavior of zfs mount when a previous attempt to mount
has failed, or is still in progress. Changes the behavior in that case
to failure, instead of double-free.
Example case of running into this bug, with dmesg:
https://pastebin.com/YRXW8WgM
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
$ apt-cache policy zfsutils-linux
zfsutils-linux:
Installed: 0.8.3-1ubuntu12.4
Candidate: 0.8.3-1ubuntu12.4
Version table:
*** 0.8.3-1ubuntu12.4 500
500 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64
Packages
100 /var/lib/dpkg/status
0.8.3-1ubuntu12 500
500 http://us.archive.ubuntu.com/ubuntu focal/main amd64 Packages
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/1902588/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp