Date: Fri, 10 Jul 2026 04:18:41 +0000 From: Warner Losh <imp@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: a22fa5ec74e0 - main - laoder.efi: Fix error in download protcol Message-ID: <6a5072a1.33aa2.2f8c0dfb@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=a22fa5ec74e084c5786745e56939e78f7159007b commit a22fa5ec74e084c5786745e56939e78f7159007b Author: Warner Losh <imp@FreeBSD.org> AuthorDate: 2026-07-10 04:04:20 +0000 Commit: Warner Losh <imp@FreeBSD.org> CommitDate: 2026-07-10 04:09:41 +0000 laoder.efi: Fix error in download protcol The download protocol calls download_data with FileOffset and BufferLength of 0 first to start the download (no data yet available). Calls it again with BufferLength == 0 and FileOffset the size of the download (again, no data). It then starts calling with BufferLength != 0 and FileOffset == 0 to start the download. The heuristic I used to detect the start was wrong, so we'd allocate the buffer twice. Fix that by being more explicit and not using the heuristic that was bogus. Fixes: afee781523e4 ("loader.efi: Recognize new memdisk=<url> and memcd=<url> options") Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D58068 --- stand/efi/loader/memdisk.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/stand/efi/loader/memdisk.c b/stand/efi/loader/memdisk.c index 8d34d3ceae42..aa843916c799 100644 --- a/stand/efi/loader/memdisk.c +++ b/stand/efi/loader/memdisk.c @@ -50,11 +50,15 @@ download_data(IN VOID *Context, IN VOID *Buffer, IN UINTN BufferLength, IN UINTN dl_state *ctx = Context; decomp_state *dctx = ctx->dctx; + if (FileOffset == 0 && BufferLength == 0) { + printf("Staritng the download\n"); + return (EFI_SUCCESS); + } + /* - * Make a note of the size when we're hinted about it. But once - * we start the download, ignore the hints. + * Make a note of the size when we're hinted about it. */ - if (ctx->size == 0 && BufferLength == 0) { + if (BufferLength == 0) { printf("We know we will download %llu bytes\n", ULL(FileOffset)); ctx->size = FileOffset; ctx->status = EFI_SUCCESS;home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a5072a1.33aa2.2f8c0dfb>
