ARM fixes for 5.18-rc1:
- avoid unnecessary rebuilds for library objects - fix return value of __setup handlers - fix invalid input check for "crashkernel=" kernel option - silence KASAN warnings in unwind_frame -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEuNNh8scc2k/wOAE+9OeQG+StrGQFAmJHF3cACgkQ9OeQG+St rGRtrg//WAlUKOIVDvspArFaRAdGnWHly58Q8VPTmh4fWBjiAzXXdbb3wbyVdUmt lcaVpxZIiDpLLEn0UdLeIcihtQsBgnayO4FJax8UC7WctLDIBlwnAU9LdeowX5Ws wH1UeBmVCd7AhTYI8eOlCfvKfoMk+h/K8oy2oI2ZKV3yB50UHscDLfychM+kwV38 dfsqQleyKeOZc8v69R9GhooIAYlZrYcg8sOg8y+eTxHL61vXEGisdPLWDFYMVB4Z ZnatiqosaV7hkk2W1nUTlFPysj063lbPPbc2IIy8zU/ZQ2QWz7FUxm7jaLBh2qqA l8vr1U2FIZCFU7JzVIfNo2sC+D+Ipi5kjJitZN4HhkHpLYa3uGXoz1aKJpDGdxpb THz10m9bXUWiuoV9XCw5G5a+p7/PiT3+KER/z1K9QnpudZYElcTed5shuBr0kvDC sDstlRv5vUhfa3jVa+HmPOE6mbjNtBrt2Ik3i6RO/shXMKD1YXd2imaAiUFGDSxN nQ/XfMB/CUEqp4qddufrJLjr5SJPRdbSA1DaZDEKJdaflNPJpDMqM7f5UvhRUXqB sfPTxXtVENz8qWP71DWpaeDiCZXn0aJK83Q74cB0eG74PuNJliZ5SUsYgWx8PNuD xFGqJBS84UpwlnZA+53CLFP4qUqkkSEWArJKgB+M1T75yGStpIQ= =wZky -----END PGP SIGNATURE----- Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm Pull ARM fixes from Russell King: - avoid unnecessary rebuilds for library objects - fix return value of __setup handlers - fix invalid input check for "crashkernel=" kernel option - silence KASAN warnings in unwind_frame * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in unwind_frame() ARM: 9190/1: kdump: add invalid input check for 'crashkernel=0' ARM: 9187/1: JIVE: fix return value of __setup handler ARM: 9189/1: decompressor: fix unneeded rebuilds of library objects
This commit is contained in:
Коммит
5dee87215b
|
@ -92,6 +92,8 @@ ifeq ($(CONFIG_USE_OF),y)
|
||||||
OBJS += $(libfdt_objs) fdt_check_mem_start.o
|
OBJS += $(libfdt_objs) fdt_check_mem_start.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
|
||||||
|
|
||||||
targets := vmlinux vmlinux.lds piggy_data piggy.o \
|
targets := vmlinux vmlinux.lds piggy_data piggy.o \
|
||||||
head.o $(OBJS)
|
head.o $(OBJS)
|
||||||
|
|
||||||
|
@ -126,8 +128,6 @@ endif
|
||||||
# Next argument is a linker script
|
# Next argument is a linker script
|
||||||
LDFLAGS_vmlinux += -T
|
LDFLAGS_vmlinux += -T
|
||||||
|
|
||||||
OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
|
|
||||||
|
|
||||||
# We need to prevent any GOTOFF relocs being used with references
|
# We need to prevent any GOTOFF relocs being used with references
|
||||||
# to symbols in the .bss section since we cannot relocate them
|
# to symbols in the .bss section since we cannot relocate them
|
||||||
# independently from the rest at run time. This can be achieved by
|
# independently from the rest at run time. This can be achieved by
|
||||||
|
|
|
@ -1004,7 +1004,8 @@ static void __init reserve_crashkernel(void)
|
||||||
total_mem = get_total_mem();
|
total_mem = get_total_mem();
|
||||||
ret = parse_crashkernel(boot_command_line, total_mem,
|
ret = parse_crashkernel(boot_command_line, total_mem,
|
||||||
&crash_size, &crash_base);
|
&crash_size, &crash_base);
|
||||||
if (ret)
|
/* invalid value specified or crashkernel=0 */
|
||||||
|
if (ret || !crash_size)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (crash_base <= 0) {
|
if (crash_base <= 0) {
|
||||||
|
|
|
@ -54,17 +54,17 @@ int notrace unwind_frame(struct stackframe *frame)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
frame->sp = frame->fp;
|
frame->sp = frame->fp;
|
||||||
frame->fp = *(unsigned long *)(fp);
|
frame->fp = READ_ONCE_NOCHECK(*(unsigned long *)(fp));
|
||||||
frame->pc = *(unsigned long *)(fp + 4);
|
frame->pc = READ_ONCE_NOCHECK(*(unsigned long *)(fp + 4));
|
||||||
#else
|
#else
|
||||||
/* check current frame pointer is within bounds */
|
/* check current frame pointer is within bounds */
|
||||||
if (fp < low + 12 || fp > high - 4)
|
if (fp < low + 12 || fp > high - 4)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* restore the registers from the stack frame */
|
/* restore the registers from the stack frame */
|
||||||
frame->fp = *(unsigned long *)(fp - 12);
|
frame->fp = READ_ONCE_NOCHECK(*(unsigned long *)(fp - 12));
|
||||||
frame->sp = *(unsigned long *)(fp - 8);
|
frame->sp = READ_ONCE_NOCHECK(*(unsigned long *)(fp - 8));
|
||||||
frame->pc = *(unsigned long *)(fp - 4);
|
frame->pc = READ_ONCE_NOCHECK(*(unsigned long *)(fp - 4));
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_KRETPROBES
|
#ifdef CONFIG_KRETPROBES
|
||||||
if (is_kretprobe_trampoline(frame->pc))
|
if (is_kretprobe_trampoline(frame->pc))
|
||||||
|
|
|
@ -236,11 +236,11 @@ static int __init jive_mtdset(char *options)
|
||||||
unsigned long set;
|
unsigned long set;
|
||||||
|
|
||||||
if (options == NULL || options[0] == '\0')
|
if (options == NULL || options[0] == '\0')
|
||||||
return 0;
|
return 1;
|
||||||
|
|
||||||
if (kstrtoul(options, 10, &set)) {
|
if (kstrtoul(options, 10, &set)) {
|
||||||
printk(KERN_ERR "failed to parse mtdset=%s\n", options);
|
printk(KERN_ERR "failed to parse mtdset=%s\n", options);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (set) {
|
switch (set) {
|
||||||
|
@ -256,7 +256,7 @@ static int __init jive_mtdset(char *options)
|
||||||
"using default.", set);
|
"using default.", set);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse the mtdset= option given to the kernel command line */
|
/* parse the mtdset= option given to the kernel command line */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче