diff --git a/devlink/mnlg.c b/devlink/mnlg.c index 37c56873..3d28453a 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; }