Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 194f1b5f authored by Sergei Shtylyov's avatar Sergei Shtylyov Committed by Yaniv Gardi
Browse files

phy: fix kernel oops in phy_lookup()



The kernel oopses in phy_lookup() due to 'phy->init_data' being NULL if we
register PHYs from a device tree probing driver and then call phy_get() on a
device that has no representation in the device tree (e.g. a PCI device).
Checking the pointer before dereferening it and skipping an interation if
it's NULL prevents this kernel oops.

Change-Id: Ied103e325a1e3fd15bd44c6a254affd26957e12e
Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Git-commit: 743bb387a1edbf1ebbba6cf77c1af3e488886c39
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


Signed-off-by: default avatarYaniv Gardi <ygardi@codeaurora.org>
parent 40e680fe
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -64,6 +64,9 @@ static struct phy *phy_lookup(struct device *device, const char *port)
	class_dev_iter_init(&iter, phy_class, NULL, NULL);
	while ((dev = class_dev_iter_next(&iter))) {
		phy = to_phy(dev);

		if (!phy->init_data)
			continue;
		count = phy->init_data->num_consumers;
		consumers = phy->init_data->consumers;
		while (count--) {