[SRU][J/N/Q/R:Unstable][PATCH 0/1] efi: Fix swapped bsearch arguments in SAUCE patch

Dongdong Tao dongdong.tao at canonical.com
Tue Feb 10 05:14:34 UTC 2026


BugLink: https://bugs.launchpad.net/bugs/2141276

== SRU Justification ==

[Impact]
The SAUCE patch "UBUNTU: SAUCE: (lockdown) Add efi_status_to_str() and
rework efi_status_to_err()" contains a bug where the 3rd and 4th arguments
to bsearch() are swapped.

The bsearch() signature is:
  void *bsearch(key, base, nmemb, size, compar)

Current code passes: (sizeof(struct efi_error_code), num) -- WRONG
Should be:           (num, sizeof(struct efi_error_code)) -- CORRECT

This causes bsearch to calculate incorrect element offsets:
- Buggy:   thinks 24 elements of 12 bytes each
- Correct: should be 12 elements of 24 bytes each

This may cause efi_status_to_err() and efi_status_to_str() to return
incorrect error codes or fail to find valid status codes.

[Test Plan]
1. Boot system with EFI firmware
2. Trigger EFI error conditions (e.g., secure boot violations)
3. Verify correct error messages are displayed
4. Check dmesg for proper EFI status code translations

[Where problems could occur]
The fix is a straightforward argument swap with no functional changes.
Risk is minimal as this corrects the code to match the documented
bsearch() API.

[Other]
This fix has been merged upstream in kernel-ark:
https://gitlab.com/cki-project/kernel-ark/-/commit/49bcc48074ba

Dongdong Tao (1):
  UBUNTU: SAUCE: efi: Fix swapped arguments to bsearch() in
    efi_status_to_*()

 drivers/firmware/efi/efi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--
2.39.5



More information about the kernel-team mailing list