Eric, thanks for reporting that.

I couldn't reproduce the build failure on LXC with apt dist-upgrade on
xenial-updates nor xenial-proposed, and it built successfully on PPAs a
while ago (for the test packages), so it seems something changed in the
PPA builders.

I'll investigate this as per our discussion on IRC, and get back to you.


You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to util-linux in Ubuntu.

  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:
  In Progress

Bug description:

   * 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'

  $ git describe --contains ac681a310c32319423297544833932f4d689a7a2

  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:

Mailing list:
Post to     :
Unsubscribe :
More help   :

Reply via email to