[U-Boot] [PATCH 2/6] pci: Check ops before using them for config space access

Marek Vasut marek.vasut at gmail.com
Mon Oct 1 10:58:48 UTC 2018


On 09/26/2018 07:42 AM, Simon Glass wrote:
> Hi Marek,
> 
> On 21 September 2018 at 16:59, Marek Vasut <marek.vasut at gmail.com> wrote:
>> The code fails to check if ops is non-NULL before using it's members.
>> Add the missing check and while at it, flip the condition to make it
>> more obvious what is actually happening.
>>
>> Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
>> Cc: Simon Glass <sjg at chromium.org>
>> Cc: Tom Rini <trini at konsulko.com>
>> ---
>>  drivers/pci/pci-uclass.c | 12 ++++++------
>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
>> index eb118f3496..de523a76ad 100644
>> --- a/drivers/pci/pci-uclass.c
>> +++ b/drivers/pci/pci-uclass.c
>> @@ -241,9 +241,9 @@ int pci_bus_write_config(struct udevice *bus, pci_dev_t bdf, int offset,
>>         struct dm_pci_ops *ops;
>>
>>         ops = pci_get_ops(bus);
>> -       if (!ops->write_config)
>> -               return -ENOSYS;
>> -       return ops->write_config(bus, bdf, offset, value, size);
>> +       if (ops && ops->write_config)
>> +               return ops->write_config(bus, bdf, offset, value, size);
> 
> I'd like to avoid this if possible, since it bloats code. If you don't
> provide operations you are on your own!
> 
> Ideas:
> - add it behind DEBUG
> - check it once in the uclass when binding - e.g. in uclass_add() -
> and print a warning?
> 
> I have pushed back pretty hard against people adding checks for things
> which should not be true in normal systems. Partly it is just for the
> confusion it adds, partly for efficiency. Perhaps we should document
> the pre-conditions that DM guarantees somewhere?

Seems unneeded, dropped.

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list