[PATCH master 26/39] efi: loader: fix file open mode always setting O_RDWR

Ahmad Fatoum a.fatoum at pengutronix.de
Mon Feb 16 00:44:26 PST 2026


efi_file_open_int() checks (open_mode & (EFI_FILE_MODE_READ |
EFI_FILE_MODE_WRITE)) which is always true for any valid open mode
since EFI_FILE_MODE_READ is always set. This means files opened with
only EFI_FILE_MODE_READ get O_RDWR instead of O_RDONLY.

Check only for EFI_FILE_MODE_WRITE to correctly distinguish read-only
from read-write opens.

Co-Authored-By: Claude Opus 4.6 <noreply at anthropic.com>
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 efi/loader/protocols/file.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/efi/loader/protocols/file.c b/efi/loader/protocols/file.c
index e002057d59ea..93700d2d3bdc 100644
--- a/efi/loader/protocols/file.c
+++ b/efi/loader/protocols/file.c
@@ -113,7 +113,7 @@ static struct efi_file_handle *file_open(struct file_handle *parent,
 
 	dirfd = parent->dir ? parent->fd : parent->parent->fd;
 
-	if (open_mode & (EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE))
+	if (open_mode & EFI_FILE_MODE_WRITE)
 		flags |= O_RDWR;
 	else
 		flags |= O_RDONLY;
-- 
2.47.3




More information about the barebox mailing list