- fix jump label branch range check

- check kmalloc failures in Loongson64 kexec
 - fix builds with clang-14
 - fix char/int handling in pic32
 -----BEGIN PGP SIGNATURE-----
 
 iQJOBAABCAA4FiEEbt46xwy6kEcDOXoUeZbBVTGwZHAFAmNw8WkaHHRzYm9nZW5k
 QGFscGhhLmZyYW5rZW4uZGUACgkQeZbBVTGwZHCdPQ//a3bRPpetxO3Feg4ETBxd
 bsk4Zu9YEwwXzghBRAV09iAwuI/0sw79g8I49zAW1yOO5L0Y8UJGybpoxdhXEwhB
 yX5yWrh+oM4ktwX5uJGD0r+q1GH4bqM245L08g0Ry3u19aux9LdhH3rMC4XZOb+Q
 L6op6TALI+zv6O4+7RTY/kKxOds/So6D3ZuZUoy3DF0EYj8ij4eXQ8w/HNz/wYqo
 tmgoYM6JT+E6jDRGFoMtj4bUnC1tt3aTBMYSiHw+fMTRFn7p/pWnMBMbsfN8WY4Q
 qUTPTZj28s0azgWqar5yoGbVYqnDKEzTuSMxIScNlyf2jmOecC1WcEJIxqEOmRui
 fPrBNffeR88bG1qofUeBE9ctoOqf20pcCUQrFYdCA51R6dDa1Pamn3gwql2Df6/Y
 7AUSUSl/1mWQv4vt1+QQ87Jwi9nteJ7LomPspKBTRFE6okLa0XVVSViCDqrwS0lj
 QgGdkgzSHn2wDd4+tc5NNDMhjW4df/u52+MH62J8S4CnextNtfMKacPuwidARABn
 acT1oVkInUM5bBvEEuaK++tuFDixfse0eQSnUlq7FoIIjm0nKDUIYEWgClzFdJRT
 i5ErRIFPTcJd2UUM1d8dQ9F8A/5q54UBHvDiTtD3Fet2+YqaFww+6FYid8qXWYkg
 mW+DHzZaxyPrd8cV2v4Ka1M=
 =OtmI
 -----END PGP SIGNATURE-----

Merge tag 'mips-fixes_6.1_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux

Pull MIPS fixes from Thomas Bogendoerfer:

 - fix jump label branch range check

 - check kmalloc failures in Loongson64 kexec

 - fix builds with clang-14

 - fix char/int handling in pic32

* tag 'mips-fixes_6.1_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
  MIPS: pic32: treat port as signed integer
  MIPS: jump_label: Fix compat branch range check
  mips: alchemy: gpio: Include the right header
  MIPS: Loongson64: Add WARN_ON on kexec related kmalloc failed
  MIPS: fix duplicate definitions for exported symbols
  mips: boot/compressed: use __NO_FORTIFY
This commit is contained in:
Linus Torvalds 2022-11-13 07:57:33 -08:00
commit af7a056891
8 changed files with 26 additions and 21 deletions

View File

@ -31,7 +31,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/gpio.h> #include <linux/gpio/driver.h>
#include <asm/mach-au1x00/gpio-au1000.h> #include <asm/mach-au1x00/gpio-au1000.h>
#include <asm/mach-au1x00/gpio-au1300.h> #include <asm/mach-au1x00/gpio-au1300.h>

View File

@ -9,6 +9,7 @@
#define DISABLE_BRANCH_PROFILING #define DISABLE_BRANCH_PROFILING
#define __NO_FORTIFY
#include <linux/types.h> #include <linux/types.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>

View File

@ -26,6 +26,6 @@ extern char *fw_getcmdline(void);
extern void fw_meminit(void); extern void fw_meminit(void);
extern char *fw_getenv(char *name); extern char *fw_getenv(char *name);
extern unsigned long fw_getenvl(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_ */ #endif /* __ASM_FW_H_ */

View File

@ -56,7 +56,7 @@ void arch_jump_label_transform(struct jump_entry *e,
* The branch offset must fit in the instruction's 26 * The branch offset must fit in the instruction's 26
* bit field. * bit field.
*/ */
WARN_ON((offset >= BIT(25)) || WARN_ON((offset >= (long)BIT(25)) ||
(offset < -(long)BIT(25))); (offset < -(long)BIT(25)));
insn.j_format.opcode = bc6_op; insn.j_format.opcode = bc6_op;

View File

@ -145,8 +145,7 @@ LEAF(kexec_smp_wait)
* kexec_args[0..3] are used to prepare register values. * kexec_args[0..3] are used to prepare register values.
*/ */
kexec_args: EXPORT(kexec_args)
EXPORT(kexec_args)
arg0: PTR_WD 0x0 arg0: PTR_WD 0x0
arg1: PTR_WD 0x0 arg1: PTR_WD 0x0
arg2: PTR_WD 0x0 arg2: PTR_WD 0x0
@ -159,8 +158,7 @@ arg3: PTR_WD 0x0
* their registers a0-a3. secondary_kexec_args[0..3] are used * their registers a0-a3. secondary_kexec_args[0..3] are used
* to prepare register values. * to prepare register values.
*/ */
secondary_kexec_args: EXPORT(secondary_kexec_args)
EXPORT(secondary_kexec_args)
s_arg0: PTR_WD 0x0 s_arg0: PTR_WD 0x0
s_arg1: PTR_WD 0x0 s_arg1: PTR_WD 0x0
s_arg2: PTR_WD 0x0 s_arg2: PTR_WD 0x0
@ -171,19 +169,16 @@ kexec_flag:
#endif #endif
kexec_start_address: EXPORT(kexec_start_address)
EXPORT(kexec_start_address)
PTR_WD 0x0 PTR_WD 0x0
.size kexec_start_address, PTRSIZE .size kexec_start_address, PTRSIZE
kexec_indirection_page: EXPORT(kexec_indirection_page)
EXPORT(kexec_indirection_page)
PTR_WD 0 PTR_WD 0
.size kexec_indirection_page, PTRSIZE .size kexec_indirection_page, PTRSIZE
relocate_new_kernel_end: relocate_new_kernel_end:
relocate_new_kernel_size: EXPORT(relocate_new_kernel_size)
EXPORT(relocate_new_kernel_size)
PTR_WD relocate_new_kernel_end - relocate_new_kernel PTR_WD relocate_new_kernel_end - relocate_new_kernel
.size relocate_new_kernel_size, PTRSIZE .size relocate_new_kernel_size, PTRSIZE

View File

@ -16,6 +16,7 @@
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#include <asm/idle.h> #include <asm/idle.h>
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/bug.h>
#include <loongson.h> #include <loongson.h>
#include <boot_param.h> #include <boot_param.h>
@ -159,8 +160,17 @@ static int __init mips_reboot_setup(void)
#ifdef CONFIG_KEXEC #ifdef CONFIG_KEXEC
kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL); kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
if (WARN_ON(!kexec_argv))
return -ENOMEM;
kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL); kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
if (WARN_ON(!kdump_argv))
return -ENOMEM;
kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL); kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL);
if (WARN_ON(!kexec_envp))
return -ENOMEM;
fw_arg1 = KEXEC_ARGV_ADDR; fw_arg1 = KEXEC_ARGV_ADDR;
memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE); memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE);

View File

@ -27,7 +27,7 @@
#define U_BRG(x) (UART_BASE(x) + 0x40) #define U_BRG(x) (UART_BASE(x) + 0x40)
static void __iomem *uart_base; static void __iomem *uart_base;
static char console_port = -1; static int console_port = -1;
static int __init configure_uart_pins(int port) static int __init configure_uart_pins(int port)
{ {
@ -47,7 +47,7 @@ static int __init configure_uart_pins(int port)
return 0; return 0;
} }
static void __init configure_uart(char port, int baud) static void __init configure_uart(int port, int baud)
{ {
u32 pbclk; u32 pbclk;
@ -60,7 +60,7 @@ static void __init configure_uart(char port, int baud)
uart_base + PIC32_SET(U_STA(port))); 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)) if (configure_uart_pins(port))
return; return;
@ -130,16 +130,15 @@ _out:
return baud; return baud;
} }
void __init fw_init_early_console(char port) void __init fw_init_early_console(void)
{ {
char *arch_cmdline = pic32_getcmdline(); char *arch_cmdline = pic32_getcmdline();
int baud = -1; int baud, port;
uart_base = ioremap(PIC32_BASE_UART, 0xc00); uart_base = ioremap(PIC32_BASE_UART, 0xc00);
baud = get_baud_from_cmdline(arch_cmdline); 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) if (port == -1)
port = EARLY_CONSOLE_PORT; port = EARLY_CONSOLE_PORT;

View File

@ -47,7 +47,7 @@ void __init plat_mem_setup(void)
strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE); strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
#ifdef CONFIG_EARLY_PRINTK #ifdef CONFIG_EARLY_PRINTK
fw_init_early_console(-1); fw_init_early_console();
#endif #endif
pic32_config_init(); pic32_config_init();
} }