Skip to content

Commit

Permalink
Merge tag 'v6.4.14' into 6.4
Browse files Browse the repository at this point in the history
This is the 6.4.14 stable release
  • Loading branch information
xanmod committed Sep 3, 2023
2 parents f8335a9 + babc8be commit 6f9db95
Show file tree
Hide file tree
Showing 14 changed files with 38 additions and 88 deletions.
4 changes: 0 additions & 4 deletions Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6251,10 +6251,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

Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/kernel/module-plts.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion arch/arm64/kernel/module-plts.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion arch/parisc/kernel/sys_parisc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;

Expand Down
18 changes: 0 additions & 18 deletions arch/x86/include/asm/sections.h
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand All @@ -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 */
6 changes: 1 addition & 5 deletions drivers/acpi/thermal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.");
Expand Down Expand Up @@ -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) {
Expand Down
1 change: 1 addition & 0 deletions drivers/thunderbolt/tmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
5 changes: 5 additions & 0 deletions include/linux/moduleloader.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
17 changes: 7 additions & 10 deletions kernel/kallsyms.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
23 changes: 1 addition & 22 deletions kernel/kallsyms_selftest.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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));
Expand Down
36 changes: 14 additions & 22 deletions kernel/locking/lockdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/*
Expand Down
4 changes: 2 additions & 2 deletions kernel/module/decompress.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion kernel/module/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down

0 comments on commit 6f9db95

Please sign in to comment.