[U-Boot] [PATCH 4/4] dm: simplify the loop in lists_driver_lookup_name()

Simon Glass sjg at chromium.org
Fri Oct 10 04:42:28 CEST 2014


On 28 September 2014 12:49, Igor Grinberg <grinberg at compulab.co.il> wrote:
> Hi Masahiro, Simon,
>
> On 09/28/14 18:22, Simon Glass wrote:
>> Hi Masahiro,
>>
>> On 28 September 2014 07:52, Masahiro Yamada <yamada.m at jp.panasonic.com> wrote:
>>>         if (strncmp(name, entry->name, len))
>>>                 continue;
>>>
>>>         /* Full match */
>>>         if (len == strlen(entry->name))
>>>                 return entry;
>>>
>>> is equivalent to:
>>>
>>>         if (!strcmp(name, entry->name))
>>>                 return entry;
>>>
>>> The latter is simpler.
>>>
>>> Signed-off-by: Masahiro Yamada <yamada.m at jp.panasonic.com>
>>> ---
>>>
>>>  drivers/core/lists.c | 9 +--------
>>>  1 file changed, 1 insertion(+), 8 deletions(-)
>>>
>>> diff --git a/drivers/core/lists.c b/drivers/core/lists.c
>>> index 699f94b..3a1ea85 100644
>>> --- a/drivers/core/lists.c
>>> +++ b/drivers/core/lists.c
>>> @@ -24,19 +24,12 @@ struct driver *lists_driver_lookup_name(const char *name)
>>>                 ll_entry_start(struct driver, driver);
>>>         const int n_ents = ll_entry_count(struct driver, driver);
>>>         struct driver *entry;
>>> -       int len;
>>>
>>>         if (!drv || !n_ents)
>>>                 return NULL;
>>>
>>> -       len = strlen(name);
>>> -
>>>         for (entry = drv; entry != drv + n_ents; entry++) {
>>> -               if (strncmp(name, entry->name, len))
>>> -                       continue;
>>> -
>>> -               /* Full match */
>>> -               if (len == strlen(entry->name))
>>> +               if (!strcmp(name, entry->name))
>>>                         return entry;
>>>         }
>>
>> The discussion on this was here:
>>
>> http://lists.denx.de/pipermail/u-boot/2014-September/189336.html
>>
>> I don't see a lot of value in the extra code, so I think we should
>> take this patch. If it is found to be a problem, we can go back to the
>> defensive code and add a test case so it is clear what exactly we are
>> defending against.
>>
>> Acked-by: Simon Glass <sjg at chromium.org>
>>
>
> Following the discussion referenced above, we have here a classic
> case of C language strings problem.
> One can dig about it all over the Internet (for example here [1]).
> I don't think we will invent a solution for that problem here.
> Also we are not about to abandon the C language...
> So, unless someone comes out with a real case to solve, I think
> we should merge this.
>
> Acked-by: Igor Grinberg <grinberg at compulab.co.il>

Applied to u-boot-dm/next, thanks!

>
> [1] http://www.sei.cmu.edu/library/abstracts/news-at-sei/feature120061.cfm
>
>
>
> --
> Regards,
> Igor.


More information about the U-Boot mailing list