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