Verification done with xenial-proposed. # dpkg -s libblkid1 | grep -i version Version: 2.27.1-6ubuntu3.9
# apt-cache madison libblkid1 | grep xenial-proposed libblkid1 | 2.27.1-6ubuntu3.9 | http://archive.ubuntu.com/ubuntu xenial-proposed/main amd64 Packages Test steps are described in comment #6. Only one filesystem (ext4) is detected: # udevadm test-builtin blkid /sys/block/$(basename $dev)/$(basename $part) ... ID_FS_UUID=aadbf085-7ce7-43e4-a149-ad11d997b710 ID_FS_UUID_ENC=aadbf085-7ce7-43e4-a149-ad11d997b710 ID_FS_VERSION=1.0 ID_FS_TYPE=ext4 ID_FS_USAGE=filesystem ... # echo $? 0 The verbose log shows nilfs is not detected: # LIBBLKID_DEBUG=all udevadm test-builtin blkid /sys/block/$(basename $dev)/$(basename $part) ... 2177: libblkid: LOWPROBE: [63] nilfs2: 2177: libblkid: LOWPROBE: call probefunc() 2177: libblkid: LOWPROBE: reuse buffer: off=1024 len=1024 pr=0x5598289abc80 2177: libblkid: LOWPROBE: reuse buffer: off=16772608 len=4096 pr=0x5598289abc80 2177: libblkid: LOWPROBE: [64] exfat: ... ** Tags added: verification-done-xenial -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to util-linux in Ubuntu. https://bugs.launchpad.net/bugs/1842437 Title: Xenial: libblkid: fix false-positive/misdetection of nilfs2 filesystem with udev Status in util-linux package in Ubuntu: Fix Released Status in util-linux source package in Xenial: Fix Committed Bug description: [Impact] * Users / systemd can fail to mount a filesystem by UUID (e.g., during boot, triggering emergency shell prompt) if the magic bytes for the nilfs filesystem are written to the right place in a partition of another filesystem, (for whatever reason or coincidence). * Note this can happen after the filesystem/mount is working correctly, so a change of behavior/problem can potentially be noticed when trying to mount the filesystem again, which can very well be the next time the system boots. * This happens because if udev blkid detects more than one filesystem, it does not print the UUID env vars required to create the /dev/disk/by-id symlinks and other things. * The fix enhances the check for valid nilfs superblock by specifically checking a value read from disk to be valid/ within a value range, which addresses this one occurrence and prevents a lot more. [Test Case] * Synthetic test case written for this problem on comment #6. [Regression Potential] * Low. The code is contained in the probe for the nilfs filesystem. * This just makes it be more restrictive about the possibly valid values for a few bytes read from disk (that now need to be within the acceptable range of valid values) so this only decreases false- positives, and cannot increase false-negatives of valid filesystems. [Original Description] The nilfs filesystem has a backup superblock at the end of the device. If the magic number is coincidentally found at the right position and the filesystem is on a partition/not-wholedisk device, the only check left is for checksum verification, which is explicitly ignored in 'udev built-in blkid'. This causes blkid to detect one actually valid filesystem with a superblock at the beginning of the device (e.g., ext4), and then an invalid nilfs2 filesystem due to a coincidental magic number at the end of the device. And this causes blkid to break out of the safeprobe routine (which expects a single filesystem to be detected), and not print the UUIDs, thus not creating /dev/disk/by-uuid/ links which prevent mounting the partition by-uuid at boot time, causing emergency shell/boot failures. This upstream fix resolved the problem by introducing a check for the 'bytes' paramenters in the superblock, which is read from disk, and turns out to have an out-of-range value. - 'liblkid: Add length check in probe_nilfs2 before crc32' https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=ac681a310c32319423297544833932f4d689a7a2 $ git describe --contains ac681a310c32319423297544833932f4d689a7a2 v2.29-rc1~172 Xenial, which is v2.27.1-based, is the only release that needs it. Bionic is v2.31.1, so all post-Xenial supported releases have it. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/util-linux/+bug/1842437/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp