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

Commit 515764a9 authored by John Stultz's avatar John Stultz Committed by Alistair Delva
Browse files

ANDROID: serdev: Fix platform device support



After commit 3c996ff8858 ("ANDROID: serdev: add platform device
support") landed, we started seeing boot panics on HiKey960/HiKey.

After some debugging I found the patch is passing a serdev_device->dev
pointer to match(), which expects the dev pointer to be
contained in a platform_device structure instead. When it uses
container_of, it ends up miscast and we get bad values.

Alistair suggested this fix which seems to avoid the issue.

Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
Bug: 146517987
Change-Id: I6354aeb4008fff85264a3c848c6c95fb8ca5b07a
parent 861433ef
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ static int serdev_device_uevent(struct device *dev, struct kobj_uevent_env *env)
		return rc;

	if (dev->parent->parent->bus == &platform_bus_type)
		rc = dev->parent->parent->bus->uevent(dev, env);
		rc = dev->parent->parent->bus->uevent(dev->parent->parent, env);

	return rc;
}
@@ -110,7 +110,7 @@ static int serdev_device_match(struct device *dev, struct device_driver *drv)
		return 1;

	if (dev->parent->parent->bus == &platform_bus_type &&
	    dev->parent->parent->bus->match(dev, drv))
	    dev->parent->parent->bus->match(dev->parent->parent, drv))
		return 1;

	return 0;