linux-version sort: argv and stdin behaviors differ

Bug #1926985 reported by dann frazier on 2021-05-03
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux-base (Debian)
New
Unknown
linux-base (Ubuntu)
Status tracked in Impish
Bionic
Undecided
Unassigned
Focal
Undecided
Unassigned
Groovy
Undecided
Unassigned
Hirsute
Undecided
Unassigned
Impish
Undecided
dann frazier

Bug Description

[Impact]
Systems that use flash-kernel may end up installing the wrong kernel image.

`linux-version sort` can provide different answers depending on how it is called (see Test Case). The stdin behavior appears to be a bug, and this is the mode flash-kernel uses. So, for example, a user with an arm64 u-boot system might end up booting 5.8.0-50-generic-64k instead of the expected 5.8.0-50-generic if both are installed. There maybe additional issues caused by this; for example, I found this with our automation that tests kernels on various arm64 platforms in version increasing order. Only after consulting logs did we realize that 64k kernels were not ever getting booted because the tooling (which uses argv mode) disagreed with the kernel installer (flash-kernel using stdin mode) about which kernel should be the default.

[Test Case]
Using argv:
$ linux-version sort 5.8.0-50-generic 5.8.0-50-generic-64k
5.8.0-50-generic
5.8.0-50-generic-64k

Using stdin (incorrect):
$ cat versions.txt
5.8.0-50-generic
5.8.0-50-generic-64k
$ cat versions.txt | linux-version sort
5.8.0-50-generic-64k
5.8.0-50-generic

[Where Problems Could Occur]
An obvious place where problems could occur is if someone is relying on rebooting into the kernel that is incorrectly being sorted greatest. For those using only Ubuntu kernel packages, the only case I'm aware of is arm64 generic vs. generic-64k case used in the examples above. The generic-64k flavor is available in >= 20.10, as well as 20.04-hwe. ARM server users - those most likely to want the generic-64k flavor - are very unlikely to be using flash-kernel. The standard for ARM servers is UEFI firmware, which use GRUB and are unaffected by this change. We found this on an old HP m400 platform which is the only Ubuntu certified u-boot-based arm64 server, and is long out of support.

Changed in linux-base (Debian):
status: Unknown → New
dann frazier (dannf) on 2021-05-07
Changed in linux-base (Ubuntu):
status: New → In Progress
assignee: nobody → dann frazier (dannf)
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux-base - 4.5ubuntu6

---------------
linux-base (4.5ubuntu6) impish; urgency=medium

  * linux-version: Fix sorting of versions provided via stdin to match
    the output when provided via argv (LP: #1926985).

 -- dann frazier <email address hidden> Mon, 03 May 2021 10:16:43 -0600

Changed in linux-base (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.