This was brought to my attention by Chris; looking at the code in commit
dc3f5aae0638 parsing of an individual parameter will terminate
prematurely if it is more than 255 characters and it will not be
recognised as expected, with the remaining characters being parsed as an
additional parameter.

For aarch64 the default command-line length is 2048 characters.

Having seem some examples of actual command-lines I'm not yet convinced
this commit is the cause - I'm currently building a reproducer to test
some ideas. One such is, looking at the Ubuntu 6.8 git commits, there's
a patch from upstream that fixes a command-line overflow:

commit 4e38935f02fa0 "init/main.c: Fix potential static_command_line
memory overflow" ( upstream commit 46dad3c1e57897)

We really need to see a complete kernel log capture using options
"earlyprintk debug" to see at what stage it breaks (and what the kernel
reports as the cmdline, and what exact kernel version it is); currently
I'm not convinced its the kernel failing here, but rather, the
initialramfs processing (since most of the kernel command-line arguments
shown are not kernel parameters at all; root= is but the 'squash:' type
prefix isn't handled by the kernel's init/ code.).

I haven't looked at MAAS but the command lines indicate it may be adding
scripts into the initialramfs that read the command-line.

-- 
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/2069534

Title:
  linux 6.8 fails to boot on arm64 if any param is more than 140 chars

Status in linux package in Ubuntu:
  Fix Released
Status in linux source package in Noble:
  Confirmed

Bug description:
  Hi,

  Linux 6.8 kernel fails to boot on ARM64 when any Linux command line
  param is more than 140 characters.

  Test Machine
  =============

  Rockchip RK3399 based RockPro64 with latest u-boot 2024.07-rc3 in EFI
  mode booting grubaa64.efi

  
  Reproduced on
  ==============
  Ubuntu 22.04.4 with Linux HWE Proposed 6.8
  Ubuntu 24.04 with Linux 6.8

  Works on 
  =========
  Ubuntu 22.04.4 with Linux 5.15, 6.6, 6.7, 6.9

  
  Steps to reproduce
  ====================

  1. Install Ubuntu 24.04 which comes with Linux 6.8 by default or
  Ubuntu 22.04.4 install Linux HWE 6.8 from
  https://launchpad.net/~canonical-kernel-
  team/+archive/ubuntu/proposed?field.series_filter=jammy

  2. Edit /boot/grub/grub.cfg and add the following param to any boot
  entry with Linux 6.8

  
testparam=f081c381e7b54edcba27e5f790d47911a4cc3e726d8d256878d3df9175c020e0f081c381e7b54edcba27e5f790d47911a4cc3e726d8d256878d3df9175c020e0f081c381e7b5

  3. Reboot the machine and select the boot entry in grub with the
  testparam as above.

  4. Observe kernel never boots.

  
  Cause
  ========

  After bisecting the kernel, I found that the bug was introduced in
  Linux 6.8-rc1 ( and released in Linux 6.8 ) with commit

  commit dc3f5aae06381b43bc9d0d416bd15ee1682940e9
  Author: Ard Biesheuvel <a...@kernel.org>
  Date:   Wed Nov 29 12:16:12 2023 +0100

      arm64: idreg-override: Avoid parameq() and parameqn()

  
  This got fixed with Linux 6.9-rc1 and released in Linux 6.9 as part of rework

  commit e223a449125571daa62debd8249fa4fc2da0a961
  Author: Ard Biesheuvel <a...@kernel.org>
  Date:   Wed Feb 14 13:28:50 2024 +0100

      arm64: idreg-override: Move to early mini C runtime

  
  That got merged to Linux 6.9-rc1 with commit

  commit 6d75c6f40a03c97e1ecd683ae54e249abb9d922b
  Merge: fe46a7dd189e 1ef21fcd6a50
  Author: Linus Torvalds <torva...@linux-foundation.org>
  Date:   Thu Mar 14 15:35:42 2024 -0700

      Merge tag 'arm64-upstream' of 
git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
      

  
  Fix Options
  =============

  Option 1.
  For Linux 6.8 the safest fix would be to revert

  commit dc3f5aae06381b43bc9d0d416bd15ee1682940e9
  Author: Ard Biesheuvel <a...@kernel.org>
  Date:   Wed Nov 29 12:16:12 2023 +0100

      arm64: idreg-override: Avoid parameq() and parameqn()

  
  Option 2.
  Unless Ubuntu Team is interested in bringing the whole Mini C Runtime rework 
to Linux 6.8 with

  
  commit 6d75c6f40a03c97e1ecd683ae54e249abb9d922b
  Merge: fe46a7dd189e 1ef21fcd6a50
  Author: Linus Torvalds <torva...@linux-foundation.org>
  Date:   Thu Mar 14 15:35:42 2024 -0700

      Merge tag 'arm64-upstream' of
  git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

  
  Please revert the change in Linux 6.8

  Thanks

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


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to