Linux 6.4.14
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +0 -4
@@ -6240,10 +6240,6 @@ -1: disable all critical trip points in all thermal zones <degrees C>: override all critical trip points - thermal.nocrt= [HW,ACPI] - Set to disable actions on ACPI thermal zone - critical and hot trip points. - thermal.off= [HW,ACPI] 1: disable ACPI thermal control
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 4 -SUBLEVEL = 13 +SUBLEVEL = 14 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/kernel/module-plts.c +1 -1
@@ -251,7 +251,7 @@ int module_frob_arch_sections(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs,/* sort by type and symbol index */ sort (rels, numrels,sizeof (Elf32_Rel), cmp_rel,NULL ); -if (strncmp (secstrings + dstsec->sh_name,".init" ,5 ) !=0 ) +if (!module_init_layout_section (secstrings + dstsec->sh_name)) core_plts +=count_plts (syms, dstsec->sh_addr, rels, numrels, s->sh_info);else
arch/arm64/kernel/module-plts.c +2 -1
@@ -7,6 +7,7 @@#include <linux/ftrace.h> #include <linux/kernel.h> #include <linux/module.h> +#include <linux/moduleloader.h> #include <linux/sort.h> static struct plt_entry __get_adrp_add_pair(u64 dst, u64 pc,
@@ -338,7 +339,7 @@ int module_frob_arch_sections(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs,if (nents)sort (rels, nents,sizeof (Elf64_Rela), cmp_rela,NULL ); -if (!str_has_prefix (secstrings + dstsec->sh_name,".init" )) +if (!module_init_layout_section (secstrings + dstsec->sh_name)) core_plts +=count_plts (syms, rels, numrels, sechdrs[i].sh_info, dstsec);else
arch/parisc/kernel/sys_parisc.c +2 -1
@@ -24,6 +24,7 @@#include <linux/personality.h> #include <linux/random.h> #include <linux/compat.h> +#include <linux/elf-randomize.h> /* * Construct an artificial page offset for the mapping based on the physical
@@ -339,7 +340,7 @@ asmlinkage long parisc_fallocate(int fd, int mode, u32 offhi, u32 offlo, ((u64)lenhi << 32) | lenlo); } -long parisc_personality (unsigned long personality) +asmlinkage long parisc_personality (unsigned long personality) {long err;
arch/x86/include/asm/sections.h +0 -18
@@ -2,8 +2,6 @@#ifndef _ASM_X86_SECTIONS_H#define _ASM_X86_SECTIONS_H -#define arch_is_kernel_initmem_freed arch_is_kernel_initmem_freed -#include <asm-generic/sections.h> #include <asm/extable.h>
@@ -18,20 +16,4 @@ extern char __end_of_kernel_reserve[];extern unsigned long _brk_start, _brk_end; -static inline bool arch_is_kernel_initmem_freed (unsigned long addr) -{ -/* -* If _brk_start has not been cleared, brk allocation is incomplete, -* and we can not make assumptions about its use. -*/ -if (_brk_start) -return 0 ; - -/* -* After brk allocation is complete, space between _brk_end and _end -* is available for allocation. -*/ -return addr >= _brk_end && addr < (unsigned long )&_end; -} -#endif /* _ASM_X86_SECTIONS_H */
drivers/acpi/thermal.c +1 -5
@@ -59,10 +59,6 @@ static int tzp;module_param (tzp, int,0444 );MODULE_PARM_DESC (tzp,"Thermal zone polling frequency, in 1/10 seconds." ); -static int nocrt; -module_param (nocrt, int,0 ); -MODULE_PARM_DESC (nocrt,"Set to take no action upon ACPI thermal zone critical trips points." ); -static int off;module_param (off, int,0 );MODULE_PARM_DESC (off,"Set to disable ACPI thermal support." );
@@ -1143,7 +1139,7 @@ static int thermal_act(const struct dmi_system_id *d) {static int thermal_nocrt (const struct dmi_system_id *d) {pr_notice ("%s detected: disabling all critical thermal trip point actions.\n" , d->ident); - nocrt =1 ; + crt =-1 ;return 0 ; }static int thermal_tzp (const struct dmi_system_id *d) {
drivers/thunderbolt/tmu.c +1 -0
@@ -416,6 +416,7 @@ int tb_switch_tmu_disable(struct tb_switch *sw)* mode. */ ret =tb_switch_tmu_rate_write (sw,TB_SWITCH_TMU_RATE_OFF ); +if (ret)return ret;tb_port_tmu_time_sync_disable (up);
include/linux/moduleloader.h +5 -0
@@ -42,6 +42,11 @@ bool module_init_section(const char *name);*/ bool module_exit_section (const char *name); +/* Describes whether within_module_init() will consider this an init section +* or not. This behaviour changes with CONFIG_MODULE_UNLOAD. +*/ +bool module_init_layout_section (const char *sname); +/* * Apply the given relocation to the (simplified) ELF. Return -error * or 0.
kernel/kallsyms.c +7 -10
@@ -188,16 +188,13 @@ static bool cleanup_symbol_name(char *s)static int compare_symbol_name (const char *name,char *namebuf) { -int ret; - - ret =strcmp (name, namebuf); -if (!ret) -return ret; - -if (cleanup_symbol_name (namebuf) && !strcmp (name, namebuf)) -return 0 ; - -return ret; +/* The kallsyms_seqs_of_names is sorted based on names after +* cleanup_symbol_name() (see scripts/kallsyms.c) if clang lto is enabled. +* To ensure correct bisection in kallsyms_lookup_names(), do +* cleanup_symbol_name(namebuf) before comparing name and namebuf. +*/ +cleanup_symbol_name (namebuf); +return strcmp (name, namebuf); }static unsigned int get_symbol_seq (int index)
kernel/kallsyms_selftest.c +1 -22
@@ -196,7 +196,7 @@ static bool match_cleanup_name(const char *s, const char *name)if (!IS_ENABLED (CONFIG_LTO_CLANG ))return false; - p =strchr (s,'.' ); + p =strstr (s,".llvm." );if (!p)return false;
@@ -344,27 +344,6 @@ static int test_kallsyms_basic_function(void) goto failed; } -/* -* The first '.' may be the initial letter, in which case the -* entire symbol name will be truncated to an empty string in -* cleanup_symbol_name(). Do not test these symbols. -* -* For example: -* cat /proc/kallsyms | awk '{print $3}' | grep -E "^\." | head -* .E_read_words -* .E_leading_bytes -* .E_trailing_bytes -* .E_write_words -* .E_copy -* .str.292.llvm.12122243386960820698 -* .str.24.llvm.12122243386960820698 -* .str.29.llvm.12122243386960820698 -* .str.75.llvm.12122243386960820698 -* .str.99.llvm.12122243386960820698 -*/ -if (IS_ENABLED (CONFIG_LTO_CLANG ) && !namebuf[0 ]) -continue ; - lookup_addr =kallsyms_lookup_name (namebuf);memset (stat,0 ,sizeof (*stat));
kernel/locking/lockdep.c +14 -22
@@ -817,34 +817,26 @@ static int very_verbose(struct lock_class *class)* Is this the address of a static object: */ #ifdef __KERNEL__ -/* -* Check if an address is part of freed initmem. After initmem is freed, -* memory can be allocated from it, and such allocations would then have -* addresses within the range [_stext, _end]. -*/ -#ifndef arch_is_kernel_initmem_freed -static int arch_is_kernel_initmem_freed (unsigned long addr) -{ -if (system_state <SYSTEM_FREEING_INITMEM ) -return 0 ; - -return init_section_contains ((void *)addr,1 ); -} -#endif -static int static_obj (const void *obj) { -unsigned long start = (unsigned long ) &_stext, - end = (unsigned long ) &_end, - addr = (unsigned long ) obj; +unsigned long addr = (unsigned long ) obj; -if (arch_is_kernel_initmem_freed (addr)) -return 0 ; +if (is_kernel_core_data (addr)) +return 1 ; + +/* +* keys are allowed in the __ro_after_init section. +*/ +if (is_kernel_rodata (addr)) +return 1 ;/* -* static variable? +* in initdata section and used during bootup only? +* NOTE: On some platforms the initdata section is +* outside of the _stext ... _end range. */ -if ((addr >= start) && (addr < end)) +if (system_state <SYSTEM_FREEING_INITMEM && +init_section_contains ((void *)addr,1 ))return 1 ;/*
kernel/module/decompress.c +2 -2
@@ -241,7 +241,7 @@ static ssize_t module_zstd_decompress(struct load_info *info, } wksp_size =zstd_dstream_workspace_bound (header.windowSize); - wksp =kmalloc (wksp_size,GFP_KERNEL ); + wksp =vmalloc (wksp_size);if (!wksp) { retval = -ENOMEM ; goto out;
@@ -284,7 +284,7 @@ static ssize_t module_zstd_decompress(struct load_info *info, retval = new_size; out: -kfree (wksp); +vfree (wksp); return retval; }#else
kernel/module/main.c +1 -1
@@ -1491,7 +1491,7 @@ long module_get_offset_and_type(struct module *mod, enum mod_mem_type type,return offset | mask; } -static bool module_init_layout_section (const char *sname) +bool module_init_layout_section (const char *sname) {#ifndef CONFIG_MODULE_UNLOAD if (module_exit_section (sname))
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.4.14 kernel.
All users of the 6.4 kernel series must upgrade.
The updated 6.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/kernel-parameters.txt | 4 -- Makefile | 2 - arch/arm/kernel/module-plts.c | 2 - arch/arm64/kernel/module-plts.c | 3 +- arch/parisc/kernel/sys_parisc.c | 3 +- arch/x86/include/asm/sections.h | 18 ------------ drivers/acpi/thermal.c | 6 ---- drivers/thunderbolt/tmu.c | 1 include/linux/moduleloader.h | 5 +++ kernel/kallsyms.c | 17 ++++------- kernel/kallsyms_selftest.c | 23 --------------- kernel/locking/lockdep.c | 36 +++++++++--------------- kernel/module/decompress.c | 4 +- kernel/module/main.c | 2 - 14 files changed, 38 insertions(+), 88 deletions(-)
Andrea Righi (1):
module/decompress: use vmalloc() for zstd decompression workspace
Arnd Bergmann (1):
arm64: module-plts: inline linux/moduleloader.h
Greg Kroah-Hartman (1):
Linux 6.4.14
Helge Deller (2):
lockdep: fix static memory detection even more
parisc: sys_parisc: parisc_personality() is called from asm code
James Morse (3):
module: Expose module_init_layout_section()
arm64: module: Use module_init_layout_section() to spot init sections
ARM: module: Use module_init_layout_section() to spot init sections
Mario Limonciello (2):
ACPI: thermal: Drop nocrt parameter
thunderbolt: Fix a backport error for display flickering issue
Yonghong Song (1):
kallsyms: Fix kallsyms_selftest failure