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:
Alexei Starovoitov
2023-01-25 20:44:09 -08:00
committed by Andrii Nakryiko
parent 34fadd0fbe
commit b92963bbe2
+3 -1
View File
@@ -544,8 +544,10 @@ static inline int ensure_good_fd(int fd)
saved_errno = errno;
close(old_fd);
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);
errno = saved_errno;
}
}
return fd;
}