On Tue, May 28, 2019 at 6:14 PM Andrii Nakryiko <andriin@xxxxxx> wrote: > > pr_warning ultimately may call into user-provided callback function, > which can clobber errno value, so we need to save it before that. > > Signed-off-by: Andrii Nakryiko <andriin@xxxxxx> Acked-by: Song Liu <songliubraving@xxxxxx> > --- > tools/lib/bpf/libbpf.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index 05a73223e524..7b80b9ae8a1f 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -565,12 +565,12 @@ static int bpf_object__elf_init(struct bpf_object *obj) > } else { > obj->efile.fd = open(obj->path, O_RDONLY); > if (obj->efile.fd < 0) { > - char errmsg[STRERR_BUFSIZE]; > - char *cp = libbpf_strerror_r(errno, errmsg, > - sizeof(errmsg)); > + char errmsg[STRERR_BUFSIZE], *cp; > > + err = -errno; > + cp = libbpf_strerror_r(err, errmsg, sizeof(errmsg)); > pr_warning("failed to open %s: %s\n", obj->path, cp); > - return -errno; > + return err; > } > > obj->efile.elf = elf_begin(obj->efile.fd, > -- > 2.17.1 >