Re: [v12, 7/8] base: soc: introduce soc_device_match() interface

Alexander Shiyan shc_work at mail.ru
Wed Sep 21 00:56:14 PDT 2016


>Среда, 21 сентября 2016, 9:57 +03:00 от Yangbo Lu <yangbo.lu at nxp.com>:
>
>From: Arnd Bergmann < arnd at arndb.de >
>
>We keep running into cases where device drivers want to know the exact
>version of the a SoC they are currently running on. In the past, this has
>usually been done through a vendor specific API that can be called by a
>driver, or by directly accessing some kind of version register that is
>not part of the device itself but that belongs to a global register area
>of the chip.
...
>+const struct soc_device_attribute *soc_device_match(
>+const struct soc_device_attribute *matches)
>+{
>+int ret = 0;
>+
>+if (!matches)
>+return NULL;
>+
>+while (!ret) {
>+if (!(matches->machine || matches->family ||
>+      matches->revision || matches->soc_id))
>+break;
>+ret = bus_for_each_dev(&soc_bus_type, NULL, (void *)matches,
>+       soc_device_match_one);
>+if (!ret)
>+matches++;

So, what happen if next "matches" (after increment) will be NULL?

I think you should use while(matches) at the start of this procedure.

---



More information about the linux-arm-kernel mailing list