[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHp75VdmUrSo+Vu3CebEWwc=CbsnS95ZzGC3zv1+zd5MsVgdUA@mail.gmail.com>
Date: Tue, 22 May 2018 23:46:07 +0300
From: Andy Shevchenko <andy.shevchenko@...il.com>
To: Rishabh Bhatnagar <rishabhb@...eaurora.org>
Cc: linux-arm Mailing List <linux-arm-kernel@...ts.infradead.org>,
linux-arm-msm@...r.kernel.org,
devicetree <devicetree@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
linux-arm@...ts.infradead.org, tsoni@...eaurora.org,
ckadabi@...eaurora.org, Evan Green <evgreen@...omium.org>,
Rob Herring <robh@...nel.org>
Subject: Re: [PATCH v7 2/2] drivers: soc: Add LLCC driver
On Tue, May 22, 2018 at 11:40 PM, <rishabhb@...eaurora.org> wrote:
> On 2018-05-22 12:38, Andy Shevchenko wrote:
>> On Tue, May 22, 2018 at 9:33 PM, <rishabhb@...eaurora.org> wrote:
>>> On 2018-05-18 14:01, Andy Shevchenko wrote:
>>>>> +struct llcc_slice_desc *llcc_slice_getd(u32 uid)
>>>>> +{
>>>>> + const struct llcc_slice_config *cfg;
>>>>> + struct llcc_slice_desc *desc;
>>>>> + u32 sz, count = 0;
>>>>> +
>>>>> + cfg = drv_data->cfg;
>>>>> + sz = drv_data->cfg_size;
>>>>> +
>>>>
>>>>
>>>>
>>>>> + while (cfg && count < sz) {
>>>>> + if (cfg->usecase_id == uid)
>>>>> + break;
>>>>> + cfg++;
>>>>> + count++;
>>>>> + }
>>>>> + if (cfg == NULL || count == sz)
>>>>> + return ERR_PTR(-ENODEV);
>>>> if (!cfg)
>>>> return ERR_PTR(-ENODEV);
>>>>
>>>> while (cfg->... != uid) {
>>>> cfg++;
>>>> count++;
>>>> }
>>>>
>>>> if (count == sz)
>>>> return ...
>>>>
>>>> Though I would rather put it to for () loop.
>>>>
>>> In each while loop iteration the cfg pointer needs to be checked for
>>> NULL. What if the usecase id never matches the uid passed by client
>>> and we keep iterating. At some point it will crash.
>> do {
>> if (!cfg || count == sz)
>> return ...(-ENODEV);
>> ...
>> } while (...);
>>
>> Though, as I said for-loop will look slightly better I think.
>
> Is this fine?
> for (count = 0; count < sz; count++) {
> if (!cfg)
> return ERR_PTR(-ENODEV);
> if (cfg->usecase_id == uid)
> break;
> cfg++;
> }
> if (count == sz)
> return ERR_PTR(-ENODEV);
for (count = 0; cfg && count < sz; count++, cfg++)
if (_id == uid)
break;
if (!cfg || count == sz)
return ERR_PTR(-ENODEV);
Simpler ?
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists