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

Yousong Zhou yszhou4tech at gmail.com
Thu Aug 31 04:40:38 PDT 2017


On 31 August 2017 at 16:44, Hans Dedecker <dedeckeh at gmail.com> wrote:
> On Wed, Aug 30, 2017 at 4:09 PM, Yousong Zhou <yszhou4tech at gmail.com> wrote:
>> 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 ;)
> My aim was to keep the code consistent when doing OOM error handling
> as another realloc failure also returned an error code which is
> handled by the calling function.
> Having said that I notice the get_module_info return code is not
> handled by scan_module_folder; would it be ok for you if in the
> follow-up patch the error code is handled instead of just die ?
>

Die with message instead of fail silently so that the issue can be
spotted more quickly.  I think there is really not much we can do in
this out of memory situation.  I am okay with both ways of handling it
as long as it's consistent in the code.

Regards,
                yousong



More information about the Lede-dev mailing list