devlink: convert most of devlink_fmsg_*() to return void
authorPrzemek Kitszel <przemyslaw.kitszel@intel.com>
Wed, 18 Oct 2023 20:26:47 +0000 (22:26 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Oct 2023 10:34:51 +0000 (11:34 +0100)
Since struct devlink_fmsg retains error by now (see 1st patch of this
series), there is no longer need to keep returning it in each call.

This is a separate commit to allow per-driver conversion to stop using
those return values.

Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/devlink.h
net/devlink/health.c

index fad8e36e3d9889d4803dae232b748519c6e4fd1a..9ac394bdfbe41fd06ae06398cf1b461ef7a95fbd 100644 (file)
@@ -1854,36 +1854,36 @@ int devlink_info_version_running_put_ext(struct devlink_info_req *req,
                                         const char *version_value,
                                         enum devlink_info_version_type version_type);
 
-int devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg);
-int devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg);
-
-int devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name);
-int devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg);
-
-int devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg,
-                                    const char *name);
-int devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg);
-int devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg,
-                                       const char *name);
-int devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg);
-
-int devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value);
-int devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value);
-int devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value,
-                           u16 value_len);
-
-int devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                              bool value);
-int devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                            u8 value);
-int devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                             u32 value);
-int devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                             u64 value);
-int devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                                const char *value);
-int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                                const void *value, u32 value_len);
+void devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg);
+void devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg);
+
+void devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name);
+void devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg);
+
+void devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg,
+                                     const char *name);
+void devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg);
+void devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg,
+                                        const char *name);
+void devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg);
+
+void devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value);
+void devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value);
+void devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value,
+                            u16 value_len);
+
+void devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                               bool value);
+void devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                             u8 value);
+void devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                              u32 value);
+void devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                              u64 value);
+void devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                                 const char *value);
+void devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                                 const void *value, u32 value_len);
 
 struct devlink_health_reporter *
 devl_port_health_reporter_create(struct devlink_port *port,
index 3858a436598eba1d7e374f74be69179ad1998a56..89405e59f45ca091653aa98b9649cd8649a9f542 100644 (file)
@@ -566,16 +566,15 @@ static int devlink_health_do_dump(struct devlink_health_reporter *reporter,
        if (!reporter->dump_fmsg)
                return -ENOMEM;
 
-       err = devlink_fmsg_obj_nest_start(reporter->dump_fmsg);
-       if (err)
-               goto dump_err;
+       devlink_fmsg_obj_nest_start(reporter->dump_fmsg);
 
        err = reporter->ops->dump(reporter, reporter->dump_fmsg,
                                  priv_ctx, extack);
        if (err)
                goto dump_err;
 
-       err = devlink_fmsg_obj_nest_end(reporter->dump_fmsg);
+       devlink_fmsg_obj_nest_end(reporter->dump_fmsg);
+       err = reporter->dump_fmsg->err;
        if (err)
                goto dump_err;
 
@@ -675,63 +674,61 @@ static void devlink_fmsg_err_if_binary(struct devlink_fmsg *fmsg)
                fmsg->err = -EINVAL;
 }
 
-static int devlink_fmsg_nest_common(struct devlink_fmsg *fmsg, int attrtype)
+static void devlink_fmsg_nest_common(struct devlink_fmsg *fmsg, int attrtype)
 {
        struct devlink_fmsg_item *item;
 
        if (fmsg->err)
-               return fmsg->err;
+               return;
 
        item = kzalloc(sizeof(*item), GFP_KERNEL);
        if (!item) {
                fmsg->err = -ENOMEM;
-               return fmsg->err;
+               return;
        }
 
        item->attrtype = attrtype;
        list_add_tail(&item->list, &fmsg->item_list);
-
-       return 0;
 }
 
-int devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg)
+void devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg)
 {
        devlink_fmsg_err_if_binary(fmsg);
-       return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_OBJ_NEST_START);
+       devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_OBJ_NEST_START);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_obj_nest_start);
 
-static int devlink_fmsg_nest_end(struct devlink_fmsg *fmsg)
+static void devlink_fmsg_nest_end(struct devlink_fmsg *fmsg)
 {
        devlink_fmsg_err_if_binary(fmsg);
-       return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_NEST_END);
+       devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_NEST_END);
 }
 
-int devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg)
+void devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg)
 {
-       return devlink_fmsg_nest_end(fmsg);
+       devlink_fmsg_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_obj_nest_end);
 
 #define DEVLINK_FMSG_MAX_SIZE (GENLMSG_DEFAULT_SIZE - GENL_HDRLEN - NLA_HDRLEN)
 
-static int devlink_fmsg_put_name(struct devlink_fmsg *fmsg, const char *name)
+static void devlink_fmsg_put_name(struct devlink_fmsg *fmsg, const char *name)
 {
        struct devlink_fmsg_item *item;
 
        devlink_fmsg_err_if_binary(fmsg);
        if (fmsg->err)
-               return fmsg->err;
+               return;
 
        if (strlen(name) + 1 > DEVLINK_FMSG_MAX_SIZE) {
                fmsg->err = -EMSGSIZE;
-               return fmsg->err;
+               return;
        }
 
        item = kzalloc(sizeof(*item) + strlen(name) + 1, GFP_KERNEL);
        if (!item) {
                fmsg->err = -ENOMEM;
-               return fmsg->err;
+               return;
        }
 
        item->nla_type = NLA_NUL_STRING;
@@ -739,83 +736,76 @@ static int devlink_fmsg_put_name(struct devlink_fmsg *fmsg, const char *name)
        item->attrtype = DEVLINK_ATTR_FMSG_OBJ_NAME;
        memcpy(&item->value, name, item->len);
        list_add_tail(&item->list, &fmsg->item_list);
-
-       return 0;
 }
 
-int devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name)
+void devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name)
 {
        devlink_fmsg_err_if_binary(fmsg);
        devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_PAIR_NEST_START);
-       return devlink_fmsg_put_name(fmsg, name);
+       devlink_fmsg_put_name(fmsg, name);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_pair_nest_start);
 
-int devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg)
+void devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg)
 {
-       return devlink_fmsg_nest_end(fmsg);
+       devlink_fmsg_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_pair_nest_end);
 
-int devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg,
-                                    const char *name)
+void devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg,
+                                     const char *name)
 {
        devlink_fmsg_pair_nest_start(fmsg, name);
-       return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_ARR_NEST_START);
+       devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_ARR_NEST_START);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_arr_pair_nest_start);
 
-int devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg)
+void devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg)
 {
        devlink_fmsg_nest_end(fmsg);
-       return devlink_fmsg_nest_end(fmsg);
+       devlink_fmsg_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_arr_pair_nest_end);
 
-int devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg,
-                                       const char *name)
+void devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg,
+                                        const char *name)
 {
-       int err;
-
-       err = devlink_fmsg_arr_pair_nest_start(fmsg, name);
-       if (err)
-               return err;
-
+       devlink_fmsg_arr_pair_nest_start(fmsg, name);
        fmsg->putting_binary = true;
-       return 0;
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_binary_pair_nest_start);
 
-int devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg)
+void devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg)
 {
        if (fmsg->err)
-               return fmsg->err;
+               return;
 
-       if (!fmsg->putting_binary) {
+       if (!fmsg->putting_binary)
                fmsg->err = -EINVAL;
-               return fmsg->err;
-       }
 
        fmsg->putting_binary = false;
-       return devlink_fmsg_arr_pair_nest_end(fmsg);
+       devlink_fmsg_arr_pair_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_binary_pair_nest_end);
 
-static int devlink_fmsg_put_value(struct devlink_fmsg *fmsg,
-                                 const void *value, u16 value_len,
-                                 u8 value_nla_type)
+static void devlink_fmsg_put_value(struct devlink_fmsg *fmsg,
+                                  const void *value, u16 value_len,
+                                  u8 value_nla_type)
 {
        struct devlink_fmsg_item *item;
 
+       if (fmsg->err)
+               return;
+
        if (value_len > DEVLINK_FMSG_MAX_SIZE) {
                fmsg->err = -EMSGSIZE;
-               return fmsg->err;
+               return;
        }
 
        item = kzalloc(sizeof(*item) + value_len, GFP_KERNEL);
        if (!item) {
                fmsg->err = -ENOMEM;
-               return fmsg->err;
+               return;
        }
 
        item->nla_type = value_nla_type;
@@ -823,125 +813,113 @@ static int devlink_fmsg_put_value(struct devlink_fmsg *fmsg,
        item->attrtype = DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA;
        memcpy(&item->value, value, item->len);
        list_add_tail(&item->list, &fmsg->item_list);
-
-       return 0;
 }
 
-static int devlink_fmsg_bool_put(struct devlink_fmsg *fmsg, bool value)
+static void devlink_fmsg_bool_put(struct devlink_fmsg *fmsg, bool value)
 {
        devlink_fmsg_err_if_binary(fmsg);
-       return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_FLAG);
+       devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_FLAG);
 }
 
-static int devlink_fmsg_u8_put(struct devlink_fmsg *fmsg, u8 value)
+static void devlink_fmsg_u8_put(struct devlink_fmsg *fmsg, u8 value)
 {
        devlink_fmsg_err_if_binary(fmsg);
-       return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U8);
+       devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U8);
 }
 
-int devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value)
+void devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value)
 {
        devlink_fmsg_err_if_binary(fmsg);
-       return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U32);
+       devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U32);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_u32_put);
 
-static int devlink_fmsg_u64_put(struct devlink_fmsg *fmsg, u64 value)
+static void devlink_fmsg_u64_put(struct devlink_fmsg *fmsg, u64 value)
 {
        devlink_fmsg_err_if_binary(fmsg);
-       return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U64);
+       devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U64);
 }
 
-int devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value)
+void devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value)
 {
        devlink_fmsg_err_if_binary(fmsg);
-       return devlink_fmsg_put_value(fmsg, value, strlen(value) + 1,
-                                     NLA_NUL_STRING);
+       devlink_fmsg_put_value(fmsg, value, strlen(value) + 1, NLA_NUL_STRING);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_string_put);
 
-int devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value,
-                           u16 value_len)
+void devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value,
+                            u16 value_len)
 {
-       if (!fmsg->putting_binary)
-               return -EINVAL;
+       if (!fmsg->err && !fmsg->putting_binary)
+               fmsg->err = -EINVAL;
 
-       return devlink_fmsg_put_value(fmsg, value, value_len, NLA_BINARY);
+       devlink_fmsg_put_value(fmsg, value, value_len, NLA_BINARY);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_binary_put);
 
-int devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                              bool value)
+void devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                               bool value)
 {
        devlink_fmsg_pair_nest_start(fmsg, name);
        devlink_fmsg_bool_put(fmsg, value);
-       return devlink_fmsg_pair_nest_end(fmsg);
+       devlink_fmsg_pair_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_bool_pair_put);
 
-int devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                            u8 value)
+void devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                             u8 value)
 {
        devlink_fmsg_pair_nest_start(fmsg, name);
        devlink_fmsg_u8_put(fmsg, value);
-       return devlink_fmsg_pair_nest_end(fmsg);
+       devlink_fmsg_pair_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_u8_pair_put);
 
-int devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                             u32 value)
+void devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                              u32 value)
 {
        devlink_fmsg_pair_nest_start(fmsg, name);
        devlink_fmsg_u32_put(fmsg, value);
-       return devlink_fmsg_pair_nest_end(fmsg);
+       devlink_fmsg_pair_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_u32_pair_put);
 
-int devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                             u64 value)
+void devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                              u64 value)
 {
        devlink_fmsg_pair_nest_start(fmsg, name);
        devlink_fmsg_u64_put(fmsg, value);
-       return devlink_fmsg_pair_nest_end(fmsg);
+       devlink_fmsg_pair_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_u64_pair_put);
 
-int devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                                const char *value)
+void devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                                 const char *value)
 {
        devlink_fmsg_pair_nest_start(fmsg, name);
        devlink_fmsg_string_put(fmsg, value);
-       return devlink_fmsg_pair_nest_end(fmsg);
+       devlink_fmsg_pair_nest_end(fmsg);
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_string_pair_put);
 
-int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name,
-                                const void *value, u32 value_len)
+void devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name,
+                                 const void *value, u32 value_len)
 {
        u32 data_size;
        u32 offset;
-       int err;
 
-       err = devlink_fmsg_binary_pair_nest_start(fmsg, name);
-       if (err)
-               return err;
+       devlink_fmsg_binary_pair_nest_start(fmsg, name);
 
        for (offset = 0; offset < value_len; offset += data_size) {
                data_size = value_len - offset;
                if (data_size > DEVLINK_FMSG_MAX_SIZE)
                        data_size = DEVLINK_FMSG_MAX_SIZE;
-               err = devlink_fmsg_binary_put(fmsg, value + offset, data_size);
-               if (err)
-                       break;
-               /* Exit from loop with a break (instead of
-                * return) to make sure putting_binary is turned off
-                */
+
+               devlink_fmsg_binary_put(fmsg, value + offset, data_size);
        }
 
-       err = devlink_fmsg_binary_pair_nest_end(fmsg);
+       devlink_fmsg_binary_pair_nest_end(fmsg);
        fmsg->putting_binary = false;
-
-       return err;
 }
 EXPORT_SYMBOL_GPL(devlink_fmsg_binary_pair_put);
 
@@ -1051,6 +1029,9 @@ static int devlink_fmsg_snd(struct devlink_fmsg *fmsg,
        void *hdr;
        int err;
 
+       if (fmsg->err)
+               return fmsg->err;
+
        while (!last) {
                int tmp_index = index;
 
@@ -1104,6 +1085,9 @@ static int devlink_fmsg_dumpit(struct devlink_fmsg *fmsg, struct sk_buff *skb,
        void *hdr;
        int err;
 
+       if (fmsg->err)
+               return fmsg->err;
+
        hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq,
                          &devlink_nl_family, NLM_F_ACK | NLM_F_MULTI, cmd);
        if (!hdr) {
@@ -1143,17 +1127,13 @@ int devlink_nl_cmd_health_reporter_diagnose_doit(struct sk_buff *skb,
        if (!fmsg)
                return -ENOMEM;
 
-       err = devlink_fmsg_obj_nest_start(fmsg);
-       if (err)
-               goto out;
+       devlink_fmsg_obj_nest_start(fmsg);
 
        err = reporter->ops->diagnose(reporter, fmsg, info->extack);
        if (err)
                goto out;
 
-       err = devlink_fmsg_obj_nest_end(fmsg);
-       if (err)
-               goto out;
+       devlink_fmsg_obj_nest_end(fmsg);
 
        err = devlink_fmsg_snd(fmsg, info,
                               DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE, 0);