mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-04 23:59:07 +08:00
libbpf: Restore errno after pr_warn.
pr_warn calls into user-provided callback, which can clobber errno, so
`errno = saved_errno` should happen after pr_warn.
Fixes: 07453245620c ("libbpf: fix errno is overwritten after being closed.")
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Andrii Nakryiko
parent
34fadd0fbe
commit
b92963bbe2
@@ -544,8 +544,10 @@ static inline int ensure_good_fd(int fd)
|
|||||||
saved_errno = errno;
|
saved_errno = errno;
|
||||||
close(old_fd);
|
close(old_fd);
|
||||||
errno = saved_errno;
|
errno = saved_errno;
|
||||||
if (fd < 0)
|
if (fd < 0) {
|
||||||
pr_warn("failed to dup FD %d to FD > 2: %d\n", old_fd, -saved_errno);
|
pr_warn("failed to dup FD %d to FD > 2: %d\n", old_fd, -saved_errno);
|
||||||
|
errno = saved_errno;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user