From: Arkadi Sharshevsky Date: Wed, 28 Feb 2018 09:24:22 +0000 (+0200) Subject: devlink: Fix error reporting X-Git-Tag: v4.16.0~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f85adc61ddd2d401af790781cc16b82dfe39b7de;p=thirdparty%2Fiproute2.git devlink: Fix error reporting The current code doesn't set errno in case of extended ack. Fixes: 049c58539f5d ("devlink: mnlg: Add support for extended ack") Signed-off-by: Arkadi Sharshevsky Acked-by: Jiri Pirko Signed-off-by: Stephen Hemminger --- diff --git a/devlink/mnlg.c b/devlink/mnlg.c index 37c568735..3d28453a3 100644 --- a/devlink/mnlg.c +++ b/devlink/mnlg.c @@ -71,15 +71,15 @@ static int mnlg_cb_error(const struct nlmsghdr *nlh, void *data) { const struct nlmsgerr *err = mnl_nlmsg_get_payload(nlh); - if (nl_dump_ext_ack(nlh, NULL)) - return MNL_CB_STOP; - /* Netlink subsystems returns the errno value with different signess */ if (err->error < 0) errno = -err->error; else errno = err->error; + if (nl_dump_ext_ack(nlh, NULL)) + return MNL_CB_ERROR; + return err->error == 0 ? MNL_CB_STOP : MNL_CB_ERROR; }