Message ID | 20240527153137.271933-1-alexghiti@rivosinc.com (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | [-fixes] bpf: resolve_btfids: Fix integer overflow when calling elf_update() | expand |
On Mon, May 27, 2024 at 05:31:37PM +0200, Alexandre Ghiti wrote: > The following error was encoutered in [1]: > > FAILED elf_update(WRITE): no error hi, this fix got already in, check this patch: https://patchwork.kernel.org/project/netdevbpf/patch/20240514070931.199694-1-friedrich.vock@gmx.de/ thanks, jirka > > elf_update() returns the total size of the file which here happens to be > a ~2.5GB vmlinux file: this size overflows the integer used to hold the > return value of elf_update() and is then interpreted as being negative. > > So fix this by using the correct type expected by elf_update() which is > off_t. > > Fixes: fbbb68de80a4 ("bpf: Add resolve_btfids tool to resolve BTF IDs in ELF object") > Link: https://bugzilla.kernel.org/show_bug.cgi?id=218887 [1] > Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com> > --- > tools/bpf/resolve_btfids/main.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/bpf/resolve_btfids/main.c b/tools/bpf/resolve_btfids/main.c > index d9520cb826b3..af393c7dee1f 100644 > --- a/tools/bpf/resolve_btfids/main.c > +++ b/tools/bpf/resolve_btfids/main.c > @@ -728,7 +728,7 @@ static int sets_patch(struct object *obj) > > static int symbols_patch(struct object *obj) > { > - int err; > + off_t err; > > if (__symbols_patch(obj, &obj->structs) || > __symbols_patch(obj, &obj->unions) || > -- > 2.39.2 >
Hi Jiri, On Mon, May 27, 2024 at 6:00 PM Jiri Olsa <olsajiri@gmail.com> wrote: > > On Mon, May 27, 2024 at 05:31:37PM +0200, Alexandre Ghiti wrote: > > The following error was encoutered in [1]: > > > > FAILED elf_update(WRITE): no error > > hi, > this fix got already in, check this patch: > https://patchwork.kernel.org/project/netdevbpf/patch/20240514070931.199694-1-friedrich.vock@gmx.de/ Damn, I missed this. If possible, I think that adding the link to the bug report (or at least the "FAILED elf_update(WRITE): no error" string) would make sense, since it is not a "potential" overflow anymore. Thanks, Alex > > thanks, > jirka > > > > > elf_update() returns the total size of the file which here happens to be > > a ~2.5GB vmlinux file: this size overflows the integer used to hold the > > return value of elf_update() and is then interpreted as being negative. > > > > So fix this by using the correct type expected by elf_update() which is > > off_t. > > > > Fixes: fbbb68de80a4 ("bpf: Add resolve_btfids tool to resolve BTF IDs in ELF object") > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=218887 [1] > > Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com> > > --- > > tools/bpf/resolve_btfids/main.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/tools/bpf/resolve_btfids/main.c b/tools/bpf/resolve_btfids/main.c > > index d9520cb826b3..af393c7dee1f 100644 > > --- a/tools/bpf/resolve_btfids/main.c > > +++ b/tools/bpf/resolve_btfids/main.c > > @@ -728,7 +728,7 @@ static int sets_patch(struct object *obj) > > > > static int symbols_patch(struct object *obj) > > { > > - int err; > > + off_t err; > > > > if (__symbols_patch(obj, &obj->structs) || > > __symbols_patch(obj, &obj->unions) || > > -- > > 2.39.2 > >
diff --git a/tools/bpf/resolve_btfids/main.c b/tools/bpf/resolve_btfids/main.c index d9520cb826b3..af393c7dee1f 100644 --- a/tools/bpf/resolve_btfids/main.c +++ b/tools/bpf/resolve_btfids/main.c @@ -728,7 +728,7 @@ static int sets_patch(struct object *obj) static int symbols_patch(struct object *obj) { - int err; + off_t err; if (__symbols_patch(obj, &obj->structs) || __symbols_patch(obj, &obj->unions) ||
The following error was encoutered in [1]: FAILED elf_update(WRITE): no error elf_update() returns the total size of the file which here happens to be a ~2.5GB vmlinux file: this size overflows the integer used to hold the return value of elf_update() and is then interpreted as being negative. So fix this by using the correct type expected by elf_update() which is off_t. Fixes: fbbb68de80a4 ("bpf: Add resolve_btfids tool to resolve BTF IDs in ELF object") Link: https://bugzilla.kernel.org/show_bug.cgi?id=218887 [1] Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com> --- tools/bpf/resolve_btfids/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)