Commit b6e99b01 authored by Toke Høiland-Jørgensen's avatar Toke Høiland-Jørgensen Committed by Alexei Starovoitov

libbpf: Use pr_warn() when printing netlink errors

The netlink functions were using fprintf(stderr, ) directly to print out
error messages, instead of going through the usual logging macros. This
makes it impossible for the calling application to silence or redirect
those error messages. Fix this by switching to pr_warn() in nlattr.c and
netlink.c.
Signed-off-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
Acked-by: default avatarSong Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/bpf/157333185055.88376.15999360127117901443.stgit@toke.dk
parent 4f33ddb4
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "bpf.h" #include "bpf.h"
#include "libbpf.h" #include "libbpf.h"
#include "libbpf_internal.h"
#include "nlattr.h" #include "nlattr.h"
#ifndef SOL_NETLINK #ifndef SOL_NETLINK
...@@ -43,7 +44,7 @@ int libbpf_netlink_open(__u32 *nl_pid) ...@@ -43,7 +44,7 @@ int libbpf_netlink_open(__u32 *nl_pid)
if (setsockopt(sock, SOL_NETLINK, NETLINK_EXT_ACK, if (setsockopt(sock, SOL_NETLINK, NETLINK_EXT_ACK,
&one, sizeof(one)) < 0) { &one, sizeof(one)) < 0) {
fprintf(stderr, "Netlink error reporting not supported\n"); pr_warn("Netlink error reporting not supported\n");
} }
if (bind(sock, (struct sockaddr *)&sa, sizeof(sa)) < 0) { if (bind(sock, (struct sockaddr *)&sa, sizeof(sa)) < 0) {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <errno.h> #include <errno.h>
#include "nlattr.h" #include "nlattr.h"
#include "libbpf_internal.h"
#include <linux/rtnetlink.h> #include <linux/rtnetlink.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
...@@ -121,8 +122,8 @@ int libbpf_nla_parse(struct nlattr *tb[], int maxtype, struct nlattr *head, ...@@ -121,8 +122,8 @@ int libbpf_nla_parse(struct nlattr *tb[], int maxtype, struct nlattr *head,
} }
if (tb[type]) if (tb[type])
fprintf(stderr, "Attribute of type %#x found multiple times in message, " pr_warn("Attribute of type %#x found multiple times in message, "
"previous attribute is being ignored.\n", type); "previous attribute is being ignored.\n", type);
tb[type] = nla; tb[type] = nla;
} }
...@@ -181,15 +182,14 @@ int libbpf_nla_dump_errormsg(struct nlmsghdr *nlh) ...@@ -181,15 +182,14 @@ int libbpf_nla_dump_errormsg(struct nlmsghdr *nlh)
if (libbpf_nla_parse(tb, NLMSGERR_ATTR_MAX, attr, alen, if (libbpf_nla_parse(tb, NLMSGERR_ATTR_MAX, attr, alen,
extack_policy) != 0) { extack_policy) != 0) {
fprintf(stderr, pr_warn("Failed to parse extended error attributes\n");
"Failed to parse extended error attributes\n");
return 0; return 0;
} }
if (tb[NLMSGERR_ATTR_MSG]) if (tb[NLMSGERR_ATTR_MSG])
errmsg = (char *) libbpf_nla_data(tb[NLMSGERR_ATTR_MSG]); errmsg = (char *) libbpf_nla_data(tb[NLMSGERR_ATTR_MSG]);
fprintf(stderr, "Kernel error message: %s\n", errmsg); pr_warn("Kernel error message: %s\n", errmsg);
return 0; return 0;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment