Re: [PATCH bpf] libbpf: Prevent overriding errno when logging errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/13/20 9:52 PM, Toke Høiland-Jørgensen wrote:
Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> writes:
On Thu, Aug 13, 2020 at 7:29 AM Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote:

Turns out there were a few more instances where libbpf didn't save the
errno before writing an error message, causing errno to be overridden by
the printf() return and the error disappearing if logging is enabled.

Signed-off-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx>
---

Acked-by: Andrii Nakryiko <andriin@xxxxxx>

  tools/lib/bpf/libbpf.c | 12 +++++++-----
  1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 0a06124f7999..fd256440e233 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -3478,10 +3478,11 @@ bpf_object__probe_global_data(struct bpf_object *obj)

         map = bpf_create_map_xattr(&map_attr);
         if (map < 0) {
-               cp = libbpf_strerror_r(errno, errmsg, sizeof(errmsg));
+               ret = -errno;
+               cp = libbpf_strerror_r(-ret, errmsg, sizeof(errmsg));

fyi, libbpf_strerror_r() is smart enough to work with both negative
and positive error numbers (it basically takes abs(err)), so no need
to ensure it's positive here and below.

Noted. Although that also means it doesn't hurt either, I suppose; so
not going to bother respinning this unless someone insists :)

Fixed up while applying, thanks!



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux