efibootmgr: commands Active and Inactive do not work.

Bug #2112632 reported by bucchi
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
efibootmgr (Ubuntu)
Triaged
Medium
Unassigned
Noble
Triaged
Medium
Unassigned
Oracular
Won't Fix
Medium
Unassigned
Plucky
Triaged
Medium
Unassigned
Questing
Triaged
Medium
Unassigned

Bug Description

OS version: Ubuntu 24.04
package version: 18-1build2

My PCs has boot entries 0010, 0020 and 0021.

$ sudo efibootmgr
BootCurrent: 0010
Timeout: 1 seconds
BootOrder: 0020,0010
Boot0010* NORMAL HD(1,GPT,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,0x800,0x80000)/<<snip>>
Boot0020* UPDATE HD(1,GPT,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,0x800,0x80000)/<<snip>>
Boot0021* UEFI: TOSHIBA, Partition 1 PciRoot(0x0)/Pci(0x14,0x0)/USB(16,0)/HD(1,GPT,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,0x800,0x80000)0000424f

I tried to active/inactive 10 or 20 entry. But these are not found.

$ sudo efibootmgr -A -b 0010
efibootmgr: Boot entry 10 not found
Could not set active state for Boot0010: No such file or directory
$ sudo efibootmgr -A -b 0020
efibootmgr: Boot entry 20 not found
Could not set active state for Boot0020: No such file or directory
$ sudo efibootmgr -a -b 0010
efibootmgr: Boot entry 10 not found
Could not set active state for Boot0010: No such file or directory
$ sudo efibootmgr -a -b 0020
efibootmgr: Boot entry 20 not found
Could not set active state for Boot0020: No such file or directory

I investigated the cause and found a problem with the get_entry() function in src/efibootmgr.c.

static var_entry_t *
get_entry(list_t *entries, uint16_t num)
{
 list_t *pos;
 var_entry_t *entry = NULL;

 list_for_each(pos, entries) {
  entry = list_entry(pos, var_entry_t, list);
  if (entry->num != num) {
   entry = NULL;
   continue;
  }
 }

 return entry;
}

This code does not break the loop when an entry is found.
Therefore, NULL is returned unless the matching entry is the last one.

Tags: bitesize patch
bucchi (bucchi-gx)
description: updated
description: updated
bucchi (bucchi-gx)
description: updated
Revision history for this message
bucchi (bucchi-gx) wrote :

I try to fix this bug.
Could you comfirm the patch?

Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "fix-active-deactive.patch" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]

tags: added: patch
Revision history for this message