From: Adrian Vovk Date: Thu, 2 Mar 2023 18:00:28 +0000 (-0500) Subject: gpt-auto: Check for /boot before putting ESP there X-Git-Tag: v254-rc1~1113 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d249c23211c3eb83d353a834478e82e747dbb44d;p=thirdparty%2Fsystemd.git gpt-auto: Check for /boot before putting ESP there We prefer /efi as a mount point for the ESP, and use /boot as a fallback if /efi doesn't exist. However, when root=tmpfs, neither /efi nor /boot exist. gpt-auto should mount to /efi in this case, but it mounted to /boot instead. This is because gpt-auto didn't check for the existence of /boot. Here, we correct this --- diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 34f67b7fcbb..a197ea9da60 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -518,10 +518,15 @@ static int add_partition_esp(DissectedPartition *p, bool has_xbootldr) { if (errno != ENOENT) return log_error_errno(errno, "Failed to determine whether /efi exists: %m"); - /* Use /boot as fallback, but only if there's no XBOOTLDR partition */ + /* Use /boot as fallback, but only if there's no XBOOTLDR partition and /boot exists */ if (!has_xbootldr) { - esp_path = "/boot"; - id = "boot"; + if (access("/boot", F_OK) < 0) { + if (errno != ENOENT) + return log_error_errno(errno, "Failed to determine whether /boot exists: %m"); + } else { + esp_path = "/boot"; + id = "boot"; + } } } if (!esp_path)