Control: reopen -1
Control: forwarded -1 https://github.com/systemd/systemd/pull/28048

Ha ha. The person whom this affected got back to me after upgrading to
252.11-1, and it doesn't work.
Odd, since we tested the patch, and applying it before did work.

Turns out: there's two identical conditions, and, when testing, I edited
the correct XBOOTLDR one (around line 800) ‒ and distributed that to the
reporter ‒ but in my systemd upstream check-out,
I edited the one for the ESP around line 500:
  nabijaczleweli@tarta:~/uwu/s/systemd-252.11$ grep -n 'This one is not it' 
src/shared/find-esp.c
  530:                if (!IN_SET(r, -ENOENT, -EADDRNOTAVAIL, -ENOTDIR, 
-ENOTTY)) /* This one is not it */
  817:        if (!IN_SET(r, -ENOENT, -EADDRNOTAVAIL, -ENOTDIR)) /* This one is 
not it */
this, naturally, doesn't work, and not one of the five people that
looked at it noticed that the analysis and mechanics are correct,
but the diff is applied to the wrong hunk.

I'd opened a fixed PR, applying the patch to the second, required,
condition as well, at forwarded-to.

I'm attaching an equivalent version, based on the systemd-252.11 dsc;
I've verified myself that applying it to 252.11-1 fixes the issue
(see forwarded-to).

Sorry for the churn; I hope this can still make it into a bookworm
point release.

Best,
наб
--- systemd-252.11.orig/src/shared/find-esp.c
+++ systemd-252.11/src/shared/find-esp.c
@@ -814,7 +814,7 @@ int find_xbootldr_and_warn(
         r = verify_xbootldr(p, /* searching= */ true, unprivileged_mode, 
ret_uuid, ret_devid);
         if (r >= 0)
                 goto found;
-        if (!IN_SET(r, -ENOENT, -EADDRNOTAVAIL, -ENOTDIR)) /* This one is not 
it */
+        if (!IN_SET(r, -ENOENT, -EADDRNOTAVAIL, -ENOTDIR, -ENOTTY)) /* This 
one is not it */
                 return r;
 
         return -ENOKEY;

Attachment: signature.asc
Description: PGP signature

Reply via email to