mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 08:03:01 +09:00
Merge tag 'hardening-v6.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull hardening fixes from Kees Cook: - Remove LTO-only suffixes from promoted global function symbols (Yonghong Song) - Remove unused .text..refcount section from vmlinux.lds.h (Petr Pavlu) - Add missing __always_inline to sparc __arch_xchg() (Arnd Bergmann) - Claim maintainership of string routines * tag 'hardening-v6.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: sparc: mark __arch_xchg() as __always_inline MAINTAINERS: Foolishly claim maintainership of string routines kallsyms: strip LTO-only suffixes from promoted global functions vmlinux.lds.h: Remove a reference to no longer used sections .text..refcount
This commit is contained in:
@@ -8679,8 +8679,11 @@ S: Maintained
|
||||
F: drivers/input/touchscreen/resistive-adc-touch.c
|
||||
|
||||
GENERIC STRING LIBRARY
|
||||
M: Kees Cook <keescook@chromium.org>
|
||||
R: Andy Shevchenko <andy@kernel.org>
|
||||
S: Maintained
|
||||
L: linux-hardening@vger.kernel.org
|
||||
S: Supported
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
|
||||
F: include/linux/string.h
|
||||
F: include/linux/string_choices.h
|
||||
F: include/linux/string_helpers.h
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
unsigned long __xchg_u32(volatile u32 *m, u32 new);
|
||||
void __xchg_called_with_bad_pointer(void);
|
||||
|
||||
static inline unsigned long __arch_xchg(unsigned long x, __volatile__ void * ptr, int size)
|
||||
static __always_inline unsigned long __arch_xchg(unsigned long x, __volatile__ void * ptr, int size)
|
||||
{
|
||||
switch (size) {
|
||||
case 4:
|
||||
|
||||
@@ -87,7 +87,7 @@ xchg16(__volatile__ unsigned short *m, unsigned short val)
|
||||
return (load32 & mask) >> bit_shift;
|
||||
}
|
||||
|
||||
static inline unsigned long
|
||||
static __always_inline unsigned long
|
||||
__arch_xchg(unsigned long x, __volatile__ void * ptr, int size)
|
||||
{
|
||||
switch (size) {
|
||||
|
||||
@@ -578,7 +578,6 @@
|
||||
*(.text.unlikely .text.unlikely.*) \
|
||||
*(.text.unknown .text.unknown.*) \
|
||||
NOINSTR_TEXT \
|
||||
*(.text..refcount) \
|
||||
*(.ref.text) \
|
||||
*(.text.asan.* .text.tsan.*) \
|
||||
MEM_KEEP(init.text*) \
|
||||
|
||||
@@ -174,11 +174,10 @@ static bool cleanup_symbol_name(char *s)
|
||||
* LLVM appends various suffixes for local functions and variables that
|
||||
* must be promoted to global scope as part of LTO. This can break
|
||||
* hooking of static functions with kprobes. '.' is not a valid
|
||||
* character in an identifier in C. Suffixes observed:
|
||||
* character in an identifier in C. Suffixes only in LLVM LTO observed:
|
||||
* - foo.llvm.[0-9a-f]+
|
||||
* - foo.[0-9a-f]+
|
||||
*/
|
||||
res = strchr(s, '.');
|
||||
res = strstr(s, ".llvm.");
|
||||
if (res) {
|
||||
*res = '\0';
|
||||
return true;
|
||||
|
||||
@@ -349,10 +349,10 @@ static void cleanup_symbol_name(char *s)
|
||||
* ASCII[_] = 5f
|
||||
* ASCII[a-z] = 61,7a
|
||||
*
|
||||
* As above, replacing '.' with '\0' does not affect the main sorting,
|
||||
* but it helps us with subsorting.
|
||||
* As above, replacing the first '.' in ".llvm." with '\0' does not
|
||||
* affect the main sorting, but it helps us with subsorting.
|
||||
*/
|
||||
p = strchr(s, '.');
|
||||
p = strstr(s, ".llvm.");
|
||||
if (p)
|
||||
*p = '\0';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user