!202 [sync] PR-199: dcb: Fix error reporting when accessing "dcb app"

From: @openeuler-sync-bot 
Reviewed-by: @robertxw 
Signed-off-by: @robertxw
This commit is contained in:
openeuler-ci-bot 2024-12-02 10:52:28 +00:00 committed by Gitee
commit 9dde95cad7
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 94 additions and 1 deletions

View File

@ -0,0 +1,86 @@
From 1b5c7414a42a29d559af85022afebc307a2b9d12 Mon Sep 17 00:00:00 2001
From: Petr Machata <petrm@nvidia.com>
Date: Wed, 9 Feb 2022 15:41:40 +0100
Subject: [PATCH] dcb: Fix error reporting when accessing "dcb app"
Currently dcb decodes the response from "dcb app add" and "del" by
interpreting the returned attribute as u8. But the value stored there is
actually a negative errno value.
Additionally, "dcb app" currently shows two sets of messages, one in
dcb_set_attribute_attr_cb() where the issue is detected, and another as a
result of error return from that function.
The current state is as follows:
# dcb app add dev swp36 dscp-prio 20:2
Error when attempting to set attribute: Unknown error 239
Attribute write: No such file or directory
Fix the "unknown error" issue by correctly decoding the attribute as i8 and
negating it. Furthermore, set errno to that value, and let the top-level
"attribute write" error message show the correct message.
Initialize errno to 0 before the dcb_talk() dispatch, and make the error
print conditional on errno != 0. This way the few error messages that are
worth describing in the place where they are detected will not cause the
second error message to be printed.
The fixed reporting looks like this:
# dcb app add dev swp36 dscp-prio 20:2
Attribute write: File exists
Reported-by: Maksym Yaremchuk <maksymy@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reference: https://github.com/iproute2/iproute2/commit/1b5c7414a42a29d559af85022afebc307a2b9d12
---
dcb/dcb.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/dcb/dcb.c b/dcb/dcb.c
index b7c2df54..8d75ab0a 100644
--- a/dcb/dcb.c
+++ b/dcb/dcb.c
@@ -106,7 +106,7 @@ static int dcb_set_attribute_attr_cb(const struct nlattr *attr, void *data)
{
struct dcb_set_attribute_response *resp = data;
uint16_t len;
- uint8_t err;
+ int8_t err;
if (mnl_attr_get_type(attr) != resp->response_attr)
return MNL_CB_OK;
@@ -117,10 +117,12 @@ static int dcb_set_attribute_attr_cb(const struct nlattr *attr, void *data)
return MNL_CB_ERROR;
}
+ /* The attribute is formally u8, but actually an i8 containing a
+ * negative errno value.
+ */
err = mnl_attr_get_u8(attr);
if (err) {
- fprintf(stderr, "Error when attempting to set attribute: %s\n",
- strerror(err));
+ errno = -err;
return MNL_CB_ERROR;
}
@@ -242,9 +244,11 @@ static int __dcb_set_attribute(struct dcb *dcb, int command, const char *dev,
if (ret)
return ret;
+ errno = 0;
ret = dcb_talk(dcb, nlh, dcb_set_attribute_cb, &resp);
if (ret) {
- perror("Attribute write");
+ if (errno)
+ perror("Attribute write");
return ret;
}
return 0;
--
2.43.0.windows.1

View File

@ -2,7 +2,7 @@
Name: iproute
Version: 5.15.0
Epoch: 1
Release: 20
Release: 21
Summary: Linux network configuration utilities
License: GPLv2+ and Public Domain
URL: https://kernel.org/pub/linux/utils/net/iproute2/
@ -75,6 +75,7 @@ Patch9000: feature-iproute-add-support-for-ipvlan-l2e-mode.patch
Patch9001: bugfix-iproute2-cancel-some-test-cases.patch
Patch9002: feature-iproute2-supports-to-parse-UB-device-and-related-display-of-vf-address.patch
Patch9003: sync-ipvlan_mode-enum-with-kernel-headers.patch
Patch9004: backport-dcb-Fix-error-reporting-when-accessing-dcb-app.patch
BuildRequires: gcc bison elfutils-libelf-devel flex iptables-devel
BuildRequires: libmnl-devel libselinux-devel pkgconfig libbpf-devel sudo make
@ -150,6 +151,12 @@ install -m 0644 lib/libnetlink.a %{buildroot}%{_libdir}/libnetlink.a
%{_mandir}/*
%changelog
* Wed Oct 09 2024 liningjie <liningjie@xfusion.com> - 1:5.15.0-21
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:dcb: Fix error reporting when accessing "dcb app"
* Fri Jul 26 2024 caokeming <caokeming@huawei.com> - 1:5.15.0-20
- Type:bugfix
- ID:NA