← Back to team overview

kernel-packages team mailing list archive

[Bug 1551419] Re: Fix UUID endianness patch breaks cloud-init on Azure

 

OK, I'm shifting this back to linux, because I think that the commit
that was backported is fixing a problem in a commit that _wasn't_
backported, therefore causing the issue. Here are the details:

In 95be58df7 [0], support for SMBIOS 3 was added, which introduces a
third version field (i.e. 3.2.1 vs. 2.9); as a result, dmi_ver is
converted from a u16 and a u32, and when it's read in, it's left-shifted
8 bits. (i.e. version 2.6 goes from 0x0206 to 0x020600). The endian-ness
checks are updated to match the shifted number (i.e. if SMBIOS version
>= 0x020600, little-endian, otherwise big-endian). This patch has NOT
been backported to trusty.

In ff4319dc7 [1], it was identified that this left-shifting happened in
the wrong place, and so it was moved to happen in a different place.
Simple enough. However, this patch HAS been backported to trusty,
despite the fact it is fixing behaviour that wasn't backported.

Crucially, though, the commit containing the backport [2] introduced the
left-shifting _without_ changing the endian-ness checks. This means that
the trusty kernel _always_ detects the SMBIOS version as being greater
than 2.6, which means on older versions of SMBIOS (like the one in use
on Azure), it returns the version with incorrect endian-ness.


[0] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/firmware/dmi_scan.c?id=95be58df74a5b21e5a78e45fddb2fd59112524c5
[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/firmware/dmi_scan.c?id=ff4319dc7cd58c92b389960e375038335d157a60
[2] http://kernel.ubuntu.com/git/ubuntu/ubuntu-trusty.git/commit/drivers/firmware?id=3ec24c55be6c543797ba3ee9a227a5631aef607e

** Package changed: cloud-init (Ubuntu) => linux (Ubuntu)

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1551419

Title:
  Fix UUID endianness patch breaks cloud-init on Azure

Status in linux package in Ubuntu:
  Confirmed

Bug description:
  On Azure, cloud-init relies on the system-uuid as based by SMBIOS a
  unique ID for a cloud instance.  If this ID ever changes, then cloud-
  init will attempt to reprovision the VM.

  This recent kernel patch in the Ubuntu kernel corrects the endianness
  for some SMBIOS fields, but also has the effect causing cloud-init to
  think that the system-uuid has changed:
  http://kernel.ubuntu.com/git/ubuntu/ubuntu-
  trusty.git/commit/drivers/firmware?id=3ec24c55be6c543797ba3ee9a227a5631aef607e

  The impact is that cloud-init attempts to reprovision the VM, often
  causing the customer to lose access to their VM.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1551419/+subscriptions


References