[Bug 1842437] Re: Xenial: libblkid: fix false-positive/misdetection of nilfs2 filesystem with udev

Mauricio Faria de Oliveira mfo at canonical.com
Thu Oct 10 13:11:07 UTC 2019


The reported failures for autopkgtest are unrelated
to this change on the probe of the nilfs filesystem.

Two are apparently failures in handling test reboot,
and another is lack of a kernel module.

I'll ask for retries on these, and do a quick check
on this module error.

Details:
---

nplan:armhf

	autopkgtest [10:35:43]: test process requested reboot with marker config
	Unexpected error:
	...
	VirtSubproc.Timeout
	autopkgtest [10:37:09]: ERROR: testbed failure: unexpected eof from the testbed

nplan:s390x

	autopkgtest [10:20:42]: test integration.py: [-----------------------
	modprobe: FATAL: Module cfg80211 not found in directory /lib/modules/4.4.0-165-generic
	...
	subprocess.CalledProcessError: Command '['modprobe', 'cfg80211']' returned non-zero exit status 1
	...
	integration.py       FAIL non-zero exit status 1

systemd:amd64

	sudo: /tmp/autopkgtest-run-wrapper: command not found
	Exit request sent.
	<VirtSubproc>: failure: timed out waiting for testbed to reboot
	autopkgtest [11:39:57]: ERROR: testbed failure: cannot send to testbed: [Errno 32] Broken pipe

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, 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



More information about the foundations-bugs mailing list