[LEDE-DEV] [PATCH ubox 2/3] kmodloader: lift restriction on module alias info

Yousong Zhou yszhou4tech at gmail.com
Wed Aug 30 07:09:37 PDT 2017


On 30 August 2017 at 21:24, Hans Dedecker <dedeckeh at gmail.com> wrote:
> kmodloader has a restriction of storing only 32 aliases for a given
> module; as modules can have easily more than 32 aliases let's remove
> the restriction by using a dynamic allocation mechanism when retrieving
> the aliases.
>
> Signed-off-by: Hans Dedecker <dedeckeh at gmail.com>
> ---
>  kmodloader.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/kmodloader.c b/kmodloader.c
> index a4d492d..2ece0c2 100644
> --- a/kmodloader.c
> +++ b/kmodloader.c
> @@ -340,7 +340,7 @@ static struct module* get_module_info(const char *module, const char *name)
>         int fd = open(module, O_RDONLY);
>         unsigned int offset, size;
>         char *map = MAP_FAILED, *strings, *dep = NULL;
> -       const char *aliases[32] = { 0 };
> +       const char **aliases = NULL;
>         int naliases = 0;
>         struct module *m = NULL;
>         struct stat s;
> @@ -383,11 +383,11 @@ static struct module* get_module_info(const char *module, const char *name)
>                 if (!strncmp(strings, "depends=", len + 1))
>                         dep = sep;
>                 else if (!strncmp(strings, "alias=", len + 1)) {
> -                       if (naliases < ARRAY_SIZE(aliases))
> -                               aliases[naliases++] = sep;
> -                       else
> -                               ULOG_WARN("module %s has more than %d aliases: truncated",
> -                                               name, ARRAY_SIZE(aliases));
> +                       aliases = realloc(aliases, sizeof(sep) * (naliases + 1));
> +                       if (!aliases)
> +                               goto out;

We should probably just die("out of memory") in this case.  Other than
that, ACK from me ;)

Regards,
                yousong

> +
> +                       aliases[naliases++] = sep;
>                 }
>                 strings = &sep[strlen(sep)];
>         }
> @@ -404,6 +404,8 @@ out:
>         if (fd >= 0)
>                 close(fd);
>
> +       free(aliases);
> +
>         return m;
>  }
>
> --
> 1.9.1
>



More information about the Lede-dev mailing list