Skip to content

Commit

Permalink
[SERIAL] Fix serial8250 driver initialisation ordering
Browse files Browse the repository at this point in the history
Commit 7493a31 changed the ordering
of the registration of the platform device driver vs the 8250 drivers
internal initialisation.  This led to the probe function being called
before the driver had finished its internal initialisation, causing
mayhem.  Revert the ordering change.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King authored and Russell King committed Jan 18, 2006
1 parent 7eb9b2f commit bc965a7
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions drivers/serial/8250.c
Original file line number Diff line number Diff line change
Expand Up @@ -2595,15 +2595,11 @@ static int __init serial8250_init(void)
if (ret)
goto out;

ret = platform_driver_register(&serial8250_isa_driver);
if (ret)
goto unreg_uart_drv;

serial8250_isa_devs = platform_device_alloc("serial8250",
PLAT8250_DEV_LEGACY);
if (!serial8250_isa_devs) {
ret = -ENOMEM;
goto unreg_plat_drv;
goto unreg_uart_drv;
}

ret = platform_device_add(serial8250_isa_devs);
Expand All @@ -2612,12 +2608,13 @@ static int __init serial8250_init(void)

serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs->dev);

goto out;
ret = platform_driver_register(&serial8250_isa_driver);
if (ret == 0)
goto out;

platform_device_del(serial8250_isa_devs);
put_dev:
platform_device_put(serial8250_isa_devs);
unreg_plat_drv:
platform_driver_unregister(&serial8250_isa_driver);
unreg_uart_drv:
uart_unregister_driver(&serial8250_reg);
out:
Expand Down

0 comments on commit bc965a7

Please sign in to comment.