From a4d9db29f8326d68762dbc0f78ad6f1aa4f29887 Mon Sep 17 00:00:00 2001 From: Michal Kubecek Date: Wed, 10 Jun 2020 13:47:34 +0200 Subject: [PATCH] netlink: fix error message suppression Rewrite of nlsock_process_reply() used a bool variable to store the value of nlctx->suppress_nlerr before passing to nlsock_process_ack(). This causes the value of 2 (suppress all error/warning messages) to be converted to 1 (suppress only -EOPNOTSUPP). As a result, -ENOENT returned by failed genetlink family lookup when running on kernel without ethtool netlink support is not ignored and misleading "netlink error: No such file or directory" message is issued even if the ioctl fallback works as expected. Fixes: 76bdf9372824 ("netlink: use pretty printing for ethtool netlink messages") Reported-by: Heiner Kallweit Signed-off-by: Michal Kubecek --- netlink/nlsock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/netlink/nlsock.c b/netlink/nlsock.c index 2c760b7..c3f09b6 100644 --- a/netlink/nlsock.c +++ b/netlink/nlsock.c @@ -255,12 +255,12 @@ int nlsock_process_reply(struct nl_socket *nlsk, mnl_cb_t reply_cb, void *data) nlhdr = (struct nlmsghdr *)buff; if (nlhdr->nlmsg_type == NLMSG_ERROR) { - bool silent = nlsk->nlctx->suppress_nlerr; + unsigned int suppress = nlsk->nlctx->suppress_nlerr; bool pretty; pretty = debug_on(nlsk->nlctx->ctx->debug, DEBUG_NL_PRETTY_MSG); - return nlsock_process_ack(nlhdr, len, silent, pretty); + return nlsock_process_ack(nlhdr, len, suppress, pretty); } msgbuff->nlhdr = nlhdr; -- 1.8.3.1