
Hi Mark,
On Sat, 5 Feb 2022 at 16:10, Mark Kettenis kettenis@openbsd.org wrote:
The stdout-path property in the device tree does not necessarily point at a serial device. The code that binds the device if it isn't marked to be bound before relocation does not check whether the device really is a serial device. So check that its uclass is UCLASS_SERIAL before probing it.
Signed-off-by: Mark Kettenis kettenis@openbsd.org
drivers/serial/serial-uclass.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
This would be better as an assert() to avoid code bloat. Under what circumstances was this wrong?
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 96a1cb65ba..931a90bdbd 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -66,7 +66,8 @@ static int serial_check_stdout(const void *blob, struct udevice **devp) */ if (node > 0 && !lists_bind_fdt(gd->dm_root, offset_to_ofnode(node), devp, NULL, false)) {
if (!device_probe(*devp))
if (device_get_uclass_id(*devp) == UCLASS_SERIAL &&
!device_probe(*devp)) return 0; }
-- 2.34.1
Regards, Simon