Activity log for bug #2017701

Date Who What changed Old value New value Message
2023-04-25 21:28:45 Joao Andre Simioni bug added bug
2023-04-26 06:09:09 Matthew Ruffell bug added subscriber Matthew Ruffell
2023-04-26 14:24:54 Athos Ribeiro ipmitool (Ubuntu): status New Triaged
2023-04-26 14:25:02 Athos Ribeiro bug added subscriber Ubuntu Server
2023-04-26 14:25:12 Athos Ribeiro bug added subscriber Athos Ribeiro
2023-04-26 23:19:09 Matthew Ruffell nominated for series Ubuntu Focal
2023-04-26 23:19:09 Matthew Ruffell bug task added ipmitool (Ubuntu Focal)
2023-04-26 23:19:09 Matthew Ruffell nominated for series Ubuntu Jammy
2023-04-26 23:19:09 Matthew Ruffell bug task added ipmitool (Ubuntu Jammy)
2023-04-26 23:19:09 Matthew Ruffell nominated for series Ubuntu Kinetic
2023-04-26 23:19:09 Matthew Ruffell bug task added ipmitool (Ubuntu Kinetic)
2023-04-26 23:19:17 Matthew Ruffell ipmitool (Ubuntu): status Triaged Fix Released
2023-04-26 23:19:22 Matthew Ruffell ipmitool (Ubuntu Focal): status New In Progress
2023-04-26 23:19:24 Matthew Ruffell ipmitool (Ubuntu Jammy): status New In Progress
2023-04-26 23:19:26 Matthew Ruffell ipmitool (Ubuntu Kinetic): status New In Progress
2023-04-26 23:19:28 Matthew Ruffell ipmitool (Ubuntu Focal): importance Undecided Medium
2023-04-26 23:19:30 Matthew Ruffell ipmitool (Ubuntu Jammy): importance Undecided Medium
2023-04-26 23:19:31 Matthew Ruffell ipmitool (Ubuntu Kinetic): importance Undecided Medium
2023-04-26 23:19:34 Matthew Ruffell ipmitool (Ubuntu Focal): assignee Matthew Ruffell (mruffell)
2023-04-26 23:19:36 Matthew Ruffell ipmitool (Ubuntu Jammy): assignee Matthew Ruffell (mruffell)
2023-04-26 23:19:38 Matthew Ruffell ipmitool (Ubuntu Kinetic): assignee Matthew Ruffell (mruffell)
2023-04-26 23:19:45 Matthew Ruffell tags sts
2023-05-12 02:19:53 Matthew Ruffell summary Fix chassis bootparam and bootdev options in Jammy Multiple options= are parsed incorrectly and options are not persistent
2023-05-12 02:22:21 Matthew Ruffell summary Multiple options= are parsed incorrectly and options are not persistent Multiple options= are parsed incorrectly making setting persistent options impossible
2023-05-12 02:50:16 Matthew Ruffell description Backport PR#165 [1] from upstream to Jammy to fix parsing multiple options, which is required to allow persistent boot options to work [2]. Lunar is using ipmitool 1.18.19, which already has the patch applied. [1] https://github.com/ipmitool/ipmitool/pull/165 [2] https://github.com/ipmitool/ipmitool/issues/163 [Impact] When passing multiple options= flags into bootdev and bootparam commands, options= parsing is incorrect, only applying the final flag, and if there were any persistent boot options set, they get wiped out, leading to options not being persistent. This makes it impossible to set a persistent efiboot flag for example. The bug is a simple logic error, as seen in the final hunk of the patch: @@ -1768,8 +2021,8 @@ ipmi_chassis_main(struct ipmi_intf * intf, int argc, char ** argv) } for (op = options; op->name; ++op) { if (strcmp(token, op->name) == 0) { - flags[op->i] &= op->mask; - flags[op->i] |= op->value; + flags[op->offset] &= ~(op->mask); + flags[op->offset] |= op->value; break; } } flags[op->i] &= op->mask; was clearing the values of all flags, breaking persistence, while the fix is negate op->mask, to keep the other flags the same while clearing the value of the flag being set, as it is set as a bitwise OR on the next line as flags[op->offset] |= op->value;. [Testcase] You need a bare metal server that supports IPMI v2 or later. If the server is set to boot from BIOS, you can attempt to efiboot it with: $ ipmitool chassis bootdev pxe option=persistent,efiboot This will boot in efi mode, but on the version in -updates, it will fail to be persistent. If you boot the server again, it will be a BIOS boot. If you install the test package in the below ppa: https://launchpad.net/~mruffell/+archive/ubuntu/sf359128-test When you run the bootdev command, efiboot will be persistent, across multiple boots. [Where problems could occur] We are changing how chassis bootdev and bootparam options are being parsed. If a regression were to occur, then options may be parsed differently to what the user was expecting, or had implemented in their scripts. Due to flag persistence being fixed, flags are no longer clobbered out each time one of these commands are run, and options will remain persistent if they have been asked to be set as persistent. Any users relying on the faulty behaviour of clobbering instead of actually turning options off when they are finished may have undesired results. If a regression were to occur, a user might have their systems options set incorrectly, and for example, swapping between BIOS and EFI boot, could lead to their server being unbootable and needing a system administrator to remote in over IPMI and set the correct boot options. ipmitool is usually used during maintenance windows, but it could catch some users out. [Other info] Upstream bug report: https://github.com/ipmitool/ipmitool/issues/163 Upstream pull request: https://github.com/ipmitool/ipmitool/pull/165 Note the pull request has six commits. The first is the only one required to fix the issue. The other five are refactors and spelling corrections, and have very little change in logic. The other five do not backport cleanly at all, and some have fixups. We will stick to including the first patch that resolves the problem, and nothing more: commit 4b89f1b42d94a9bb96093d5e5237c7f1cfd84580 From: Alexander Amelkin <alexander@amelkin.msk.ru> Date: Wed, 6 Nov 2019 11:40:15 +0300 Subject: chassis: bootparam/bootdev: Refactor for less magic Link: https://github.com/ipmitool/ipmitool/commit/4b89f1b42d94a9bb96093d5e5237c7f1cfd84580
2023-05-12 03:04:08 Matthew Ruffell attachment added debdiff for ipmitool on kinetic https://bugs.launchpad.net/ubuntu/+source/ipmitool/+bug/2017701/+attachment/5672606/+files/lp2017701_kinetic.debdiff
2023-05-12 03:04:43 Matthew Ruffell attachment added debdiff for ipmitool on jammy https://bugs.launchpad.net/ubuntu/+source/ipmitool/+bug/2017701/+attachment/5672607/+files/lp2017701_jammy.debdiff
2023-05-12 03:05:18 Matthew Ruffell attachment added debdiff for ipmitool on focal https://bugs.launchpad.net/ubuntu/+source/ipmitool/+bug/2017701/+attachment/5672608/+files/lp2017701_focal.debdiff
2023-06-08 02:53:13 Matthew Ruffell tags sts sts sts-sponsor
2023-06-12 04:23:08 Matthew Ruffell tags sts sts-sponsor sts
2023-06-12 04:23:27 Matthew Ruffell bug added subscriber Support Engineering Sponsors
2023-06-13 18:51:41 Heitor Alves de Siqueira tags sts se se-sponsor-halves
2023-06-13 18:51:44 Heitor Alves de Siqueira bug added subscriber Heitor Alves de Siqueira
2023-07-13 04:02:35 Matthew Ruffell attachment added debdiff for ipmitool on focal V2 https://bugs.launchpad.net/ubuntu/+source/ipmitool/+bug/2017701/+attachment/5685939/+files/lp2017701_focal_V2.debdiff
2023-07-13 04:03:01 Matthew Ruffell attachment added debdiff for ipmitool on jammy V2 https://bugs.launchpad.net/ubuntu/+source/ipmitool/+bug/2017701/+attachment/5685940/+files/lp2017701_jammy_V2.debdiff
2023-07-13 04:03:14 Matthew Ruffell ipmitool (Ubuntu Kinetic): status In Progress Won't Fix
2023-07-16 23:39:27 Matthew Ruffell description [Impact] When passing multiple options= flags into bootdev and bootparam commands, options= parsing is incorrect, only applying the final flag, and if there were any persistent boot options set, they get wiped out, leading to options not being persistent. This makes it impossible to set a persistent efiboot flag for example. The bug is a simple logic error, as seen in the final hunk of the patch: @@ -1768,8 +2021,8 @@ ipmi_chassis_main(struct ipmi_intf * intf, int argc, char ** argv) } for (op = options; op->name; ++op) { if (strcmp(token, op->name) == 0) { - flags[op->i] &= op->mask; - flags[op->i] |= op->value; + flags[op->offset] &= ~(op->mask); + flags[op->offset] |= op->value; break; } } flags[op->i] &= op->mask; was clearing the values of all flags, breaking persistence, while the fix is negate op->mask, to keep the other flags the same while clearing the value of the flag being set, as it is set as a bitwise OR on the next line as flags[op->offset] |= op->value;. [Testcase] You need a bare metal server that supports IPMI v2 or later. If the server is set to boot from BIOS, you can attempt to efiboot it with: $ ipmitool chassis bootdev pxe option=persistent,efiboot This will boot in efi mode, but on the version in -updates, it will fail to be persistent. If you boot the server again, it will be a BIOS boot. If you install the test package in the below ppa: https://launchpad.net/~mruffell/+archive/ubuntu/sf359128-test When you run the bootdev command, efiboot will be persistent, across multiple boots. [Where problems could occur] We are changing how chassis bootdev and bootparam options are being parsed. If a regression were to occur, then options may be parsed differently to what the user was expecting, or had implemented in their scripts. Due to flag persistence being fixed, flags are no longer clobbered out each time one of these commands are run, and options will remain persistent if they have been asked to be set as persistent. Any users relying on the faulty behaviour of clobbering instead of actually turning options off when they are finished may have undesired results. If a regression were to occur, a user might have their systems options set incorrectly, and for example, swapping between BIOS and EFI boot, could lead to their server being unbootable and needing a system administrator to remote in over IPMI and set the correct boot options. ipmitool is usually used during maintenance windows, but it could catch some users out. [Other info] Upstream bug report: https://github.com/ipmitool/ipmitool/issues/163 Upstream pull request: https://github.com/ipmitool/ipmitool/pull/165 Note the pull request has six commits. The first is the only one required to fix the issue. The other five are refactors and spelling corrections, and have very little change in logic. The other five do not backport cleanly at all, and some have fixups. We will stick to including the first patch that resolves the problem, and nothing more: commit 4b89f1b42d94a9bb96093d5e5237c7f1cfd84580 From: Alexander Amelkin <alexander@amelkin.msk.ru> Date: Wed, 6 Nov 2019 11:40:15 +0300 Subject: chassis: bootparam/bootdev: Refactor for less magic Link: https://github.com/ipmitool/ipmitool/commit/4b89f1b42d94a9bb96093d5e5237c7f1cfd84580 [Impact] When passing multiple options= flags into bootdev and bootparam commands, options= parsing is incorrect, only applying the final flag, and if there were any persistent boot options set, they get wiped out, leading to options not being persistent. This makes it impossible to set a persistent efiboot flag for example. The bug is a simple logic error, as seen in the final hunk of the patch: @@ -1768,8 +2021,8 @@ ipmi_chassis_main(struct ipmi_intf * intf, int argc, char ** argv)      }      for (op = options; op->name; ++op) {       if (strcmp(token, op->name) == 0) { - flags[op->i] &= op->mask; - flags[op->i] |= op->value; + flags[op->offset] &= ~(op->mask); + flags[op->offset] |= op->value;        break;       }      } flags[op->i] &= op->mask; was clearing the values of all flags, breaking persistence, while the fix is negate op->mask, to keep the other flags the same while clearing the value of the flag being set, as it is set as a bitwise OR on the next line as flags[op->offset] |= op->value;. [Testcase] You need a bare metal server that supports IPMI v2 or later. If the server is set to boot from BIOS, you can attempt to efiboot it with: $ sudo ipmitool chassis bootdev pxe options=persistent,efiboot Set Boot Device to pxe $ sudo ipmitool raw 0x00 0x09 0x05 0x0 0x0 01 05 a0 04 00 00 00 <--- "a0", but expecting "e0" This will boot in efi mode, but on the version in -updates, it will fail to be persistent. If you boot the server again, it will be a BIOS boot. If you install the test package in the below ppa: https://launchpad.net/~mruffell/+archive/ubuntu/sf359128-test When you run the bootdev command, efiboot will be persistent, across multiple boots. $ sudo ipmitool chassis bootdev pxe options=persistent,efiboot Set Boot Device to pxe swqa@luna-tdc5:~/jamien$ sudo ipmitool raw 0x00 0x09 0x05 0x0 0x0 01 05 e0 04 00 00 00 <--- shows "e0" this time [Where problems could occur] We are changing how chassis bootdev and bootparam options are being parsed. If a regression were to occur, then options may be parsed differently to what the user was expecting, or had implemented in their scripts. Due to flag persistence being fixed, flags are no longer clobbered out each time one of these commands are run, and options will remain persistent if they have been asked to be set as persistent. Any users relying on the faulty behaviour of clobbering instead of actually turning options off when they are finished may have undesired results. If a regression were to occur, a user might have their systems options set incorrectly, and for example, swapping between BIOS and EFI boot, could lead to their server being unbootable and needing a system administrator to remote in over IPMI and set the correct boot options. ipmitool is usually used during maintenance windows, but it could catch some users out. [Other info] Upstream bug report: https://github.com/ipmitool/ipmitool/issues/163 Upstream pull request: https://github.com/ipmitool/ipmitool/pull/165 Note the pull request has six commits. The first is the only one required to fix the issue. The other five are refactors and spelling corrections, and have very little change in logic. The other five do not backport cleanly at all, and some have fixups. We will stick to including the first patch that resolves the problem, and nothing more: commit 4b89f1b42d94a9bb96093d5e5237c7f1cfd84580 From: Alexander Amelkin <alexander@amelkin.msk.ru> Date: Wed, 6 Nov 2019 11:40:15 +0300 Subject: chassis: bootparam/bootdev: Refactor for less magic Link: https://github.com/ipmitool/ipmitool/commit/4b89f1b42d94a9bb96093d5e5237c7f1cfd84580
2023-07-28 11:47:25 Timo Aaltonen ipmitool (Ubuntu Jammy): status In Progress Fix Committed
2023-07-28 11:47:26 Timo Aaltonen bug added subscriber Ubuntu Stable Release Updates Team
2023-07-28 11:47:30 Timo Aaltonen bug added subscriber SRU Verification
2023-07-28 11:47:32 Timo Aaltonen tags se se-sponsor-halves se se-sponsor-halves verification-needed verification-needed-jammy
2023-07-28 11:48:07 Timo Aaltonen ipmitool (Ubuntu Focal): status In Progress Fix Committed
2023-07-28 11:48:11 Timo Aaltonen tags se se-sponsor-halves verification-needed verification-needed-jammy se se-sponsor-halves verification-needed verification-needed-focal verification-needed-jammy
2023-08-10 03:04:55 Matthew Ruffell tags se se-sponsor-halves verification-needed verification-needed-focal verification-needed-jammy se se-sponsor-halves verification-done-jammy verification-needed verification-needed-focal
2023-08-10 03:10:28 Matthew Ruffell tags se se-sponsor-halves verification-done-jammy verification-needed verification-needed-focal se se-sponsor-halves verification-done-focal verification-done-jammy
2023-08-16 13:05:07 Launchpad Janitor ipmitool (Ubuntu Jammy): status Fix Committed Fix Released
2023-08-16 13:05:10 Robie Basak removed subscriber Ubuntu Stable Release Updates Team
2023-08-16 13:05:17 Launchpad Janitor ipmitool (Ubuntu Focal): status Fix Committed Fix Released