MIPS: pic32: treat port as signed integer
authorJason A. Donenfeld <Jason@zx2c4.com>
Fri, 28 Oct 2022 13:23:44 +0000 (15:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Dec 2022 10:15:39 +0000 (11:15 +0100)
[ Upstream commit 648060902aa302331b5d6e4f26d8ee0761d239ab ]

get_port_from_cmdline() returns an int, yet is assigned to a char, which
is wrong in its own right, but also, with char becoming unsigned, this
poses problems, because -1 is used as an error value. Further
complicating things, fw_init_early_console() is only ever called with a
-1 argument. Fix this up by removing the unused argument from
fw_init_early_console() and treating port as a proper signed integer.

Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/mips/include/asm/fw/fw.h
arch/mips/pic32/pic32mzda/early_console.c
arch/mips/pic32/pic32mzda/init.c

index d0ef8b4892bbe6af327a0b351df93f948c413b37..d0494ce4b3373a751597d063c6b9bece9379b431 100644 (file)
@@ -26,6 +26,6 @@ extern char *fw_getcmdline(void);
 extern void fw_meminit(void);
 extern char *fw_getenv(char *name);
 extern unsigned long fw_getenvl(char *name);
-extern void fw_init_early_console(char port);
+extern void fw_init_early_console(void);
 
 #endif /* __ASM_FW_H_ */
index d7b783463fac1b3af66ff02a1ad16a0c375eec84..4933c533705972c49bf93936dd165c267b39baff 100644 (file)
@@ -34,7 +34,7 @@
 #define U_BRG(x)       (UART_BASE(x) + 0x40)
 
 static void __iomem *uart_base;
-static char console_port = -1;
+static int console_port = -1;
 
 static int __init configure_uart_pins(int port)
 {
@@ -54,7 +54,7 @@ static int __init configure_uart_pins(int port)
        return 0;
 }
 
-static void __init configure_uart(char port, int baud)
+static void __init configure_uart(int port, int baud)
 {
        u32 pbclk;
 
@@ -67,7 +67,7 @@ static void __init configure_uart(char port, int baud)
                     uart_base + PIC32_SET(U_STA(port)));
 }
 
-static void __init setup_early_console(char port, int baud)
+static void __init setup_early_console(int port, int baud)
 {
        if (configure_uart_pins(port))
                return;
@@ -137,16 +137,15 @@ _out:
        return baud;
 }
 
-void __init fw_init_early_console(char port)
+void __init fw_init_early_console(void)
 {
        char *arch_cmdline = pic32_getcmdline();
-       int baud = -1;
+       int baud, port;
 
        uart_base = ioremap_nocache(PIC32_BASE_UART, 0xc00);
 
        baud = get_baud_from_cmdline(arch_cmdline);
-       if (port == -1)
-               port = get_port_from_cmdline(arch_cmdline);
+       port = get_port_from_cmdline(arch_cmdline);
 
        if (port == -1)
                port = EARLY_CONSOLE_PORT;
index 406c6c5cec29bb5dd3b319c6c785f45dce388537..cf2625551b458d40dace1ef6448f690370e5ea9e 100644 (file)
@@ -68,7 +68,7 @@ void __init plat_mem_setup(void)
                strlcpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
 
 #ifdef CONFIG_EARLY_PRINTK
-       fw_init_early_console(-1);
+       fw_init_early_console();
 #endif
        pic32_config_init();
 }