On Wed, Aug 10, 2022 at 11:34:25AM -0700, Andrii Nakryiko wrote: > As suggested in [0], make sure that libbpf_print saves and restored > errno and as such guaranteed that no matter what actual print callback > user installs, macros like pr_warn/pr_info/pr_debug are completely > transparent as far as errno goes. > > While libbpf code is pretty careful about not clobbering important errno > values accidentally with pr_warn(), it's a trivial change to make sure > that pr_warn can be used anywhere without a risk of clobbering errno. > > No functional changes, just future proofing. > > [0] https://github.com/libbpf/libbpf/pull/536 > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > --- > tools/lib/bpf/libbpf.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index f7364ea82ac1..917d975bd4c6 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -223,13 +223,18 @@ __printf(2, 3) > void libbpf_print(enum libbpf_print_level level, const char *format, ...) > { > va_list args; > + int old_errno; > > if (!__libbpf_pr) > return; > > + old_errno = errno; > + > va_start(args, format); > __libbpf_pr(level, format, args); > va_end(args); > + > + errno = old_errno; > } > > static void pr_perm_msg(int err) > -- > 2.30.2 > The change looks good to me. Acked-by: Daniel Müller <deso@xxxxxxxxxx>