diff options
| author | Alexei Starovoitov <[email protected]> | 2022-12-30 03:12:17 +0000 |
|---|---|---|
| committer | Alexei Starovoitov <[email protected]> | 2022-12-30 03:18:08 +0000 |
| commit | bb5747cfbc4b7fe29621ca6cd4a695d2723bf2e8 (patch) | |
| tree | d5bc0780aa6ae6d11b1f172031fcd0753f0a13ba /tools/lib | |
| parent | libbpf: Added the description of some API functions (diff) | |
| download | kernel-bb5747cfbc4b7fe29621ca6cd4a695d2723bf2e8.tar.gz kernel-bb5747cfbc4b7fe29621ca6cd4a695d2723bf2e8.zip | |
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 <[email protected]>
Diffstat (limited to 'tools/lib')
| -rw-r--r-- | tools/lib/bpf/libbpf_internal.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/tools/lib/bpf/libbpf_internal.h b/tools/lib/bpf/libbpf_internal.h index 98333a6c38e9..e4d05662a96c 100644 --- a/tools/lib/bpf/libbpf_internal.h +++ b/tools/lib/bpf/libbpf_internal.h @@ -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; } |
