Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

base: soc: Let soc_device_match() return no match when called too early

If soc_device_match() is called before the SoC bus has been registered,
bus_for_each_dev() returns -EINVAL, which is considered a match, as it
is non-zero.

While calling soc_device_match() too early can be considered an
integration mistake, returning a match is counter-intuitive:
soc_device_match() is typically used to handle quirks, i.e. to deviate
from the default path. Hence add a check to abort checking and return
no match instead.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Arnd Bergmann <arnd@arndb.de>

+2
+2
drivers/base/soc.c
··· 230 230 break; 231 231 ret = bus_for_each_dev(&soc_bus_type, NULL, (void *)matches, 232 232 soc_device_match_one); 233 + if (ret < 0) 234 + return NULL; 233 235 if (!ret) 234 236 matches++; 235 237 else