diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2024-06-06 20:48:41 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-06-24 16:10:17 +0200 |
commit | efa6b0a1d66e189fa13e75f704dd8ee5948a3cd3 (patch) | |
tree | 51cac688b41af398135d3e95e633b773c3391839 /drivers/tty | |
parent | tty: add missing MODULE_DESCRIPTION() macros (diff) | |
download | linux-efa6b0a1d66e189fa13e75f704dd8ee5948a3cd3.tar.xz linux-efa6b0a1d66e189fa13e75f704dd8ee5948a3cd3.zip |
serial: 8250_platform: Explicitly show we initialise ISA ports only once
serial8250_isa_init_ports() uses home grown approach to make itself
a singleton. Instead, explicitly show that we initialise ISA ports
once by providing a helper function which calls the original function
via DO_ONCE() macro.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20240606184841.3102545-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/serial/8250/8250_platform.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/tty/serial/8250/8250_platform.c b/drivers/tty/serial/8250/8250_platform.c index ded985182e04..5817c1d72314 100644 --- a/drivers/tty/serial/8250/8250_platform.c +++ b/drivers/tty/serial/8250/8250_platform.c @@ -9,6 +9,7 @@ #include <linux/array_size.h> #include <linux/module.h> #include <linux/moduleparam.h> +#include <linux/once.h> #include <linux/platform_device.h> #include <linux/serial_8250.h> @@ -53,15 +54,10 @@ void serial8250_set_isa_configurator(serial8250_isa_config_fn v) } EXPORT_SYMBOL(serial8250_set_isa_configurator); -void __init serial8250_isa_init_ports(void) +static void __init __serial8250_isa_init_ports(void) { - static int first = 1; int i, irqflag = 0; - if (!first) - return; - first = 0; - if (nr_uarts > UART_NR) nr_uarts = UART_NR; @@ -102,6 +98,11 @@ void __init serial8250_isa_init_ports(void) } } +void __init serial8250_isa_init_ports(void) +{ + DO_ONCE(__serial8250_isa_init_ports); +} + /* * Register a set of serial devices attached to a platform device. The * list is terminated with a zero flags entry, which means we expect |