From: Emil Velikov Date: Wed, 7 May 2025 12:22:41 +0000 (+0100) Subject: tools/modinfo: return the errno from add_param() X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e45e624e05e219223c025ff0edf3529bbdd66b15;p=thirdparty%2Fkmod.git tools/modinfo: return the errno from add_param() The single caller of add_param() does not need the struct param*, so we might as well return the error code directly. As a result we don't manually overwrite errno. Reference: https://github.com/kmod-project/kmod/issues/244 Signed-off-by: Emil Velikov Link: https://github.com/kmod-project/kmod/pull/346 Signed-off-by: Lucas De Marchi --- diff --git a/tools/modinfo.c b/tools/modinfo.c index 84ecb855..49b790fd 100644 --- a/tools/modinfo.c +++ b/tools/modinfo.c @@ -34,15 +34,13 @@ struct param { int typelen; }; -static struct param *add_param(const char *name, size_t namelen, const char *param, - size_t paramlen, const char *type, size_t typelen, - struct param **list) +static int add_param(const char *name, size_t namelen, const char *param, size_t paramlen, + const char *type, size_t typelen, struct param **list) { struct param *it; if (namelen > INT_MAX || paramlen > INT_MAX || typelen > INT_MAX) { - errno = EINVAL; - return NULL; + return -EINVAL; } for (it = *list; it != NULL; it = it->next) { @@ -53,7 +51,7 @@ static struct param *add_param(const char *name, size_t namelen, const char *par if (it == NULL) { it = malloc(sizeof(struct param)); if (it == NULL) - return NULL; + return -ENOMEM; it->next = *list; *list = it; it->name = name; @@ -74,15 +72,16 @@ static struct param *add_param(const char *name, size_t namelen, const char *par it->typelen = typelen; } - return it; + return 0; } static int process_parm(const char *key, const char *value, struct param **params) { const char *name, *param, *type; size_t namelen, paramlen, typelen; - struct param *it; const char *colon = strchr(value, ':'); + int ret; + if (colon == NULL) { ERR("Found invalid \"%s=%s\": missing ':'\n", key, value); return 0; @@ -102,9 +101,9 @@ static int process_parm(const char *key, const char *value, struct param **param typelen = strlen(type); } - it = add_param(name, namelen, param, paramlen, type, typelen, params); - if (it == NULL) { - ERR("Unable to add parameter: %m\n"); + ret = add_param(name, namelen, param, paramlen, type, typelen, params); + if (ret < 0) { + ERR("Unable to add parameter: %s\n", strerror(-ret)); return -ENOMEM; }