Skip to content

Commit 04999b9

Browse files
ameryhungAlexei Starovoitov
authored andcommitted
libbpf: Fix invalid write loop logic in bpf_linker__add_buf()
Fix bpf_linker__add_buf()'s logic of copying data from memory buffer into memfd. In the event of short write not writing entire buf_sz bytes into memfd file, we'll append bytes from the beginning of buf *again* (corrupting ELF file contents) instead of correctly appending the rest of not-yet-read buf contents. Closes: libbpf/libbpf#945 Fixes: 6d5e5e5 ("libbpf: Extend linker API to support in-memory ELF files") Signed-off-by: Amery Hung <ameryhung@gmail.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Jiri Olsa <jolsa@kernel.org> Link: https://lore.kernel.org/bpf/20260209230134.3530521-1-ameryhung@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
1 parent 728ff16 commit 04999b9

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

tools/lib/bpf/linker.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,7 @@ int bpf_linker__add_buf(struct bpf_linker *linker, void *buf, size_t buf_sz,
581581

582582
written = 0;
583583
while (written < buf_sz) {
584-
ret = write(fd, buf, buf_sz);
584+
ret = write(fd, buf + written, buf_sz - written);
585585
if (ret < 0) {
586586
ret = -errno;
587587
pr_warn("failed to write '%s': %s\n", filename, errstr(ret));

0 commit comments

Comments
 (0)