From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Tao Zhang <tao1.zhang@linux.intel.com>,
Pawan Gupta <pawan.kumar.gupta@linux.intel.com>,
Dave Hansen <dave.hansen@linux.intel.com>
Subject: [PATCH 6.14 197/197] selftest/x86/bugs: Add selftests for ITS
Date: Mon, 12 May 2025 19:40:47 +0200 [thread overview]
Message-ID: <20250512172052.439043944@linuxfoundation.org> (raw)
In-Reply-To: <20250512172044.326436266@linuxfoundation.org>
6.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
commit 7a9b709e7cc5ce1ffb84ce07bf6d157e1de758df upstream.
Below are the tests added for Indirect Target Selection (ITS):
- its_sysfs.py - Check if sysfs reflects the correct mitigation status for
the mitigation selected via the kernel cmdline.
- its_permutations.py - tests mitigation selection with cmdline
permutations with other bugs like spectre_v2 and retbleed.
- its_indirect_alignment.py - verifies that for addresses in
.retpoline_sites section that belong to lower half of cacheline are
patched to ITS-safe thunk. Typical output looks like below:
Site 49: function symbol: __x64_sys_restart_syscall+0x1f <0xffffffffbb1509af>
# vmlinux: 0xffffffff813509af: jmp 0xffffffff81f5a8e0
# kcore: 0xffffffffbb1509af: jmpq *%rax
# ITS thunk NOT expected for site 49
# PASSED: Found *%rax
#
Site 50: function symbol: __resched_curr+0xb0 <0xffffffffbb181910>
# vmlinux: 0xffffffff81381910: jmp 0xffffffff81f5a8e0
# kcore: 0xffffffffbb181910: jmp 0xffffffffc02000fc
# ITS thunk expected for site 50
# PASSED: Found 0xffffffffc02000fc -> jmpq *%rax <scattered-thunk?>
- its_ret_alignment.py - verifies that for addresses in .return_sites
section that belong to lower half of cacheline are patched to
its_return_thunk. Typical output looks like below:
Site 97: function symbol: collect_event+0x48 <0xffffffffbb007f18>
# vmlinux: 0xffffffff81207f18: jmp 0xffffffff81f5b500
# kcore: 0xffffffffbb007f18: jmp 0xffffffffbbd5b560
# PASSED: Found jmp 0xffffffffbbd5b560 <its_return_thunk>
#
Site 98: function symbol: collect_event+0xa4 <0xffffffffbb007f74>
# vmlinux: 0xffffffff81207f74: jmp 0xffffffff81f5b500
# kcore: 0xffffffffbb007f74: retq
# PASSED: Found retq
Some of these tests have dependency on tools like virtme-ng[1] and drgn[2].
When the dependencies are not met, the test will be skipped.
[1] https://github.com/arighi/virtme-ng
[2] https://github.com/osandov/drgn
Co-developed-by: Tao Zhang <tao1.zhang@linux.intel.com>
Signed-off-by: Tao Zhang <tao1.zhang@linux.intel.com>
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/testing/selftests/Makefile | 1
tools/testing/selftests/x86/bugs/Makefile | 3
tools/testing/selftests/x86/bugs/common.py | 164 +++++++++++++
tools/testing/selftests/x86/bugs/its_indirect_alignment.py | 150 +++++++++++
tools/testing/selftests/x86/bugs/its_permutations.py | 109 ++++++++
tools/testing/selftests/x86/bugs/its_ret_alignment.py | 139 +++++++++++
tools/testing/selftests/x86/bugs/its_sysfs.py | 65 +++++
7 files changed, 631 insertions(+)
create mode 100644 tools/testing/selftests/x86/bugs/Makefile
create mode 100755 tools/testing/selftests/x86/bugs/common.py
create mode 100755 tools/testing/selftests/x86/bugs/its_indirect_alignment.py
create mode 100755 tools/testing/selftests/x86/bugs/its_permutations.py
create mode 100755 tools/testing/selftests/x86/bugs/its_ret_alignment.py
create mode 100755 tools/testing/selftests/x86/bugs/its_sysfs.py
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -118,6 +118,7 @@ TARGETS += user_events
TARGETS += vDSO
TARGETS += mm
TARGETS += x86
+TARGETS += x86/bugs
TARGETS += zram
#Please keep the TARGETS list alphabetically sorted
# Run "make quicktest=1 run_tests" or
--- /dev/null
+++ b/tools/testing/selftests/x86/bugs/Makefile
@@ -0,0 +1,3 @@
+TEST_PROGS := its_sysfs.py its_permutations.py its_indirect_alignment.py its_ret_alignment.py
+TEST_FILES := common.py
+include ../../lib.mk
--- /dev/null
+++ b/tools/testing/selftests/x86/bugs/common.py
@@ -0,0 +1,164 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (c) 2025 Intel Corporation
+#
+# This contains kselftest framework adapted common functions for testing
+# mitigation for x86 bugs.
+
+import os, sys, re, shutil
+
+sys.path.insert(0, '../../kselftest')
+import ksft
+
+def read_file(path):
+ if not os.path.exists(path):
+ return None
+ with open(path, 'r') as file:
+ return file.read().strip()
+
+def cpuinfo_has(arg):
+ cpuinfo = read_file('/proc/cpuinfo')
+ if arg in cpuinfo:
+ return True
+ return False
+
+def cmdline_has(arg):
+ cmdline = read_file('/proc/cmdline')
+ if arg in cmdline:
+ return True
+ return False
+
+def cmdline_has_either(args):
+ cmdline = read_file('/proc/cmdline')
+ for arg in args:
+ if arg in cmdline:
+ return True
+ return False
+
+def cmdline_has_none(args):
+ return not cmdline_has_either(args)
+
+def cmdline_has_all(args):
+ cmdline = read_file('/proc/cmdline')
+ for arg in args:
+ if arg not in cmdline:
+ return False
+ return True
+
+def get_sysfs(bug):
+ return read_file("/sys/devices/system/cpu/vulnerabilities/" + bug)
+
+def sysfs_has(bug, mitigation):
+ status = get_sysfs(bug)
+ if mitigation in status:
+ return True
+ return False
+
+def sysfs_has_either(bugs, mitigations):
+ for bug in bugs:
+ for mitigation in mitigations:
+ if sysfs_has(bug, mitigation):
+ return True
+ return False
+
+def sysfs_has_none(bugs, mitigations):
+ return not sysfs_has_either(bugs, mitigations)
+
+def sysfs_has_all(bugs, mitigations):
+ for bug in bugs:
+ for mitigation in mitigations:
+ if not sysfs_has(bug, mitigation):
+ return False
+ return True
+
+def bug_check_pass(bug, found):
+ ksft.print_msg(f"\nFound: {found}")
+ # ksft.print_msg(f"\ncmdline: {read_file('/proc/cmdline')}")
+ ksft.test_result_pass(f'{bug}: {found}')
+
+def bug_check_fail(bug, found, expected):
+ ksft.print_msg(f'\nFound:\t {found}')
+ ksft.print_msg(f'Expected:\t {expected}')
+ ksft.print_msg(f"\ncmdline: {read_file('/proc/cmdline')}")
+ ksft.test_result_fail(f'{bug}: {found}')
+
+def bug_status_unknown(bug, found):
+ ksft.print_msg(f'\nUnknown status: {found}')
+ ksft.print_msg(f"\ncmdline: {read_file('/proc/cmdline')}")
+ ksft.test_result_fail(f'{bug}: {found}')
+
+def basic_checks_sufficient(bug, mitigation):
+ if not mitigation:
+ bug_status_unknown(bug, "None")
+ return True
+ elif mitigation == "Not affected":
+ ksft.test_result_pass(bug)
+ return True
+ elif mitigation == "Vulnerable":
+ if cmdline_has_either([f'{bug}=off', 'mitigations=off']):
+ bug_check_pass(bug, mitigation)
+ return True
+ return False
+
+def get_section_info(vmlinux, section_name):
+ from elftools.elf.elffile import ELFFile
+ with open(vmlinux, 'rb') as f:
+ elffile = ELFFile(f)
+ section = elffile.get_section_by_name(section_name)
+ if section is None:
+ ksft.print_msg("Available sections in vmlinux:")
+ for sec in elffile.iter_sections():
+ ksft.print_msg(sec.name)
+ raise ValueError(f"Section {section_name} not found in {vmlinux}")
+ return section['sh_addr'], section['sh_offset'], section['sh_size']
+
+def get_patch_sites(vmlinux, offset, size):
+ import struct
+ output = []
+ with open(vmlinux, 'rb') as f:
+ f.seek(offset)
+ i = 0
+ while i < size:
+ data = f.read(4) # s32
+ if not data:
+ break
+ sym_offset = struct.unpack('<i', data)[0] + i
+ i += 4
+ output.append(sym_offset)
+ return output
+
+def get_instruction_from_vmlinux(elffile, section, virtual_address, target_address):
+ from capstone import Cs, CS_ARCH_X86, CS_MODE_64
+ section_start = section['sh_addr']
+ section_end = section_start + section['sh_size']
+
+ if not (section_start <= target_address < section_end):
+ return None
+
+ offset = target_address - section_start
+ code = section.data()[offset:offset + 16]
+
+ cap = init_capstone()
+ for instruction in cap.disasm(code, target_address):
+ if instruction.address == target_address:
+ return instruction
+ return None
+
+def init_capstone():
+ from capstone import Cs, CS_ARCH_X86, CS_MODE_64, CS_OPT_SYNTAX_ATT
+ cap = Cs(CS_ARCH_X86, CS_MODE_64)
+ cap.syntax = CS_OPT_SYNTAX_ATT
+ return cap
+
+def get_runtime_kernel():
+ import drgn
+ return drgn.program_from_kernel()
+
+def check_dependencies_or_skip(modules, script_name="unknown test"):
+ for mod in modules:
+ try:
+ __import__(mod)
+ except ImportError:
+ ksft.test_result_skip(f"Skipping {script_name}: missing module '{mod}'")
+ ksft.finished()
--- /dev/null
+++ b/tools/testing/selftests/x86/bugs/its_indirect_alignment.py
@@ -0,0 +1,150 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (c) 2025 Intel Corporation
+#
+# Test for indirect target selection (ITS) mitigation.
+#
+# Test if indirect CALL/JMP are correctly patched by evaluating
+# the vmlinux .retpoline_sites in /proc/kcore.
+
+# Install dependencies
+# add-apt-repository ppa:michel-slm/kernel-utils
+# apt update
+# apt install -y python3-drgn python3-pyelftools python3-capstone
+#
+# Best to copy the vmlinux at a standard location:
+# mkdir -p /usr/lib/debug/lib/modules/$(uname -r)
+# cp $VMLINUX /usr/lib/debug/lib/modules/$(uname -r)/vmlinux
+#
+# Usage: ./its_indirect_alignment.py [vmlinux]
+
+import os, sys, argparse
+from pathlib import Path
+
+this_dir = os.path.dirname(os.path.realpath(__file__))
+sys.path.insert(0, this_dir + '/../../kselftest')
+import ksft
+import common as c
+
+bug = "indirect_target_selection"
+
+mitigation = c.get_sysfs(bug)
+if not mitigation or "Aligned branch/return thunks" not in mitigation:
+ ksft.test_result_skip("Skipping its_indirect_alignment.py: Aligned branch/return thunks not enabled")
+ ksft.finished()
+
+if c.sysfs_has("spectre_v2", "Retpolines"):
+ ksft.test_result_skip("Skipping its_indirect_alignment.py: Retpolines deployed")
+ ksft.finished()
+
+c.check_dependencies_or_skip(['drgn', 'elftools', 'capstone'], script_name="its_indirect_alignment.py")
+
+from elftools.elf.elffile import ELFFile
+from drgn.helpers.common.memory import identify_address
+
+cap = c.init_capstone()
+
+if len(os.sys.argv) > 1:
+ arg_vmlinux = os.sys.argv[1]
+ if not os.path.exists(arg_vmlinux):
+ ksft.test_result_fail(f"its_indirect_alignment.py: vmlinux not found at argument path: {arg_vmlinux}")
+ ksft.exit_fail()
+ os.makedirs(f"/usr/lib/debug/lib/modules/{os.uname().release}", exist_ok=True)
+ os.system(f'cp {arg_vmlinux} /usr/lib/debug/lib/modules/$(uname -r)/vmlinux')
+
+vmlinux = f"/usr/lib/debug/lib/modules/{os.uname().release}/vmlinux"
+if not os.path.exists(vmlinux):
+ ksft.test_result_fail(f"its_indirect_alignment.py: vmlinux not found at {vmlinux}")
+ ksft.exit_fail()
+
+ksft.print_msg(f"Using vmlinux: {vmlinux}")
+
+retpolines_start_vmlinux, retpolines_sec_offset, size = c.get_section_info(vmlinux, '.retpoline_sites')
+ksft.print_msg(f"vmlinux: Section .retpoline_sites (0x{retpolines_start_vmlinux:x}) found at 0x{retpolines_sec_offset:x} with size 0x{size:x}")
+
+sites_offset = c.get_patch_sites(vmlinux, retpolines_sec_offset, size)
+total_retpoline_tests = len(sites_offset)
+ksft.print_msg(f"Found {total_retpoline_tests} retpoline sites")
+
+prog = c.get_runtime_kernel()
+retpolines_start_kcore = prog.symbol('__retpoline_sites').address
+ksft.print_msg(f'kcore: __retpoline_sites: 0x{retpolines_start_kcore:x}')
+
+x86_indirect_its_thunk_r15 = prog.symbol('__x86_indirect_its_thunk_r15').address
+ksft.print_msg(f'kcore: __x86_indirect_its_thunk_r15: 0x{x86_indirect_its_thunk_r15:x}')
+
+tests_passed = 0
+tests_failed = 0
+tests_unknown = 0
+
+with open(vmlinux, 'rb') as f:
+ elffile = ELFFile(f)
+ text_section = elffile.get_section_by_name('.text')
+
+ for i in range(0, len(sites_offset)):
+ site = retpolines_start_kcore + sites_offset[i]
+ vmlinux_site = retpolines_start_vmlinux + sites_offset[i]
+ passed = unknown = failed = False
+ try:
+ vmlinux_insn = c.get_instruction_from_vmlinux(elffile, text_section, text_section['sh_addr'], vmlinux_site)
+ kcore_insn = list(cap.disasm(prog.read(site, 16), site))[0]
+ operand = kcore_insn.op_str
+ insn_end = site + kcore_insn.size - 1 # TODO handle Jcc.32 __x86_indirect_thunk_\reg
+ safe_site = insn_end & 0x20
+ site_status = "" if safe_site else "(unsafe)"
+
+ ksft.print_msg(f"\nSite {i}: {identify_address(prog, site)} <0x{site:x}> {site_status}")
+ ksft.print_msg(f"\tvmlinux: 0x{vmlinux_insn.address:x}:\t{vmlinux_insn.mnemonic}\t{vmlinux_insn.op_str}")
+ ksft.print_msg(f"\tkcore: 0x{kcore_insn.address:x}:\t{kcore_insn.mnemonic}\t{kcore_insn.op_str}")
+
+ if (site & 0x20) ^ (insn_end & 0x20):
+ ksft.print_msg(f"\tSite at safe/unsafe boundary: {str(kcore_insn.bytes)} {kcore_insn.mnemonic} {operand}")
+ if safe_site:
+ tests_passed += 1
+ passed = True
+ ksft.print_msg(f"\tPASSED: At safe address")
+ continue
+
+ if operand.startswith('0xffffffff'):
+ thunk = int(operand, 16)
+ if thunk > x86_indirect_its_thunk_r15:
+ insn_at_thunk = list(cap.disasm(prog.read(thunk, 16), thunk))[0]
+ operand += ' -> ' + insn_at_thunk.mnemonic + ' ' + insn_at_thunk.op_str + ' <dynamic-thunk?>'
+ if 'jmp' in insn_at_thunk.mnemonic and thunk & 0x20:
+ ksft.print_msg(f"\tPASSED: Found {operand} at safe address")
+ passed = True
+ if not passed:
+ if kcore_insn.operands[0].type == capstone.CS_OP_IMM:
+ operand += ' <' + prog.symbol(int(operand, 16)) + '>'
+ if '__x86_indirect_its_thunk_' in operand:
+ ksft.print_msg(f"\tPASSED: Found {operand}")
+ else:
+ ksft.print_msg(f"\tPASSED: Found direct branch: {kcore_insn}, ITS thunk not required.")
+ passed = True
+ else:
+ unknown = True
+ if passed:
+ tests_passed += 1
+ elif unknown:
+ ksft.print_msg(f"UNKNOWN: unexpected operand: {kcore_insn}")
+ tests_unknown += 1
+ else:
+ ksft.print_msg(f'\t************* FAILED *************')
+ ksft.print_msg(f"\tFound {kcore_insn.bytes} {kcore_insn.mnemonic} {operand}")
+ ksft.print_msg(f'\t**********************************')
+ tests_failed += 1
+ except Exception as e:
+ ksft.print_msg(f"UNKNOWN: An unexpected error occurred: {e}")
+ tests_unknown += 1
+
+ksft.print_msg(f"\n\nSummary:")
+ksft.print_msg(f"PASS: \t{tests_passed} \t/ {total_retpoline_tests}")
+ksft.print_msg(f"FAIL: \t{tests_failed} \t/ {total_retpoline_tests}")
+ksft.print_msg(f"UNKNOWN: \t{tests_unknown} \t/ {total_retpoline_tests}")
+
+if tests_failed == 0:
+ ksft.test_result_pass("All ITS return thunk sites passed")
+else:
+ ksft.test_result_fail(f"{tests_failed} ITS return thunk sites failed")
+ksft.finished()
--- /dev/null
+++ b/tools/testing/selftests/x86/bugs/its_permutations.py
@@ -0,0 +1,109 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (c) 2025 Intel Corporation
+#
+# Test for indirect target selection (ITS) cmdline permutations with other bugs
+# like spectre_v2 and retbleed.
+
+import os, sys, subprocess, itertools, re, shutil
+
+test_dir = os.path.dirname(os.path.realpath(__file__))
+sys.path.insert(0, test_dir + '/../../kselftest')
+import ksft
+import common as c
+
+bug = "indirect_target_selection"
+mitigation = c.get_sysfs(bug)
+
+if not mitigation or "Not affected" in mitigation:
+ ksft.test_result_skip("Skipping its_permutations.py: not applicable")
+ ksft.finished()
+
+if shutil.which('vng') is None:
+ ksft.test_result_skip("Skipping its_permutations.py: virtme-ng ('vng') not found in PATH.")
+ ksft.finished()
+
+TEST = f"{test_dir}/its_sysfs.py"
+default_kparam = ['clearcpuid=hypervisor', 'panic=5', 'panic_on_warn=1', 'oops=panic', 'nmi_watchdog=1', 'hung_task_panic=1']
+
+DEBUG = " -v "
+
+# Install dependencies
+# https://github.com/arighi/virtme-ng
+# apt install virtme-ng
+BOOT_CMD = f"vng --run {test_dir}/../../../../../arch/x86/boot/bzImage "
+#BOOT_CMD += DEBUG
+
+bug = "indirect_target_selection"
+
+input_options = {
+ 'indirect_target_selection' : ['off', 'on', 'stuff', 'vmexit'],
+ 'retbleed' : ['off', 'stuff', 'auto'],
+ 'spectre_v2' : ['off', 'on', 'eibrs', 'retpoline', 'ibrs', 'eibrs,retpoline'],
+}
+
+def pretty_print(output):
+ OKBLUE = '\033[94m'
+ OKGREEN = '\033[92m'
+ WARNING = '\033[93m'
+ FAIL = '\033[91m'
+ ENDC = '\033[0m'
+ BOLD = '\033[1m'
+
+ # Define patterns and their corresponding colors
+ patterns = {
+ r"^ok \d+": OKGREEN,
+ r"^not ok \d+": FAIL,
+ r"^# Testing .*": OKBLUE,
+ r"^# Found: .*": WARNING,
+ r"^# Totals: .*": BOLD,
+ r"pass:([1-9]\d*)": OKGREEN,
+ r"fail:([1-9]\d*)": FAIL,
+ r"skip:([1-9]\d*)": WARNING,
+ }
+
+ # Apply colors based on patterns
+ for pattern, color in patterns.items():
+ output = re.sub(pattern, lambda match: f"{color}{match.group(0)}{ENDC}", output, flags=re.MULTILINE)
+
+ print(output)
+
+combinations = list(itertools.product(*input_options.values()))
+ksft.print_header()
+ksft.set_plan(len(combinations))
+
+logs = ""
+
+for combination in combinations:
+ append = ""
+ log = ""
+ for p in default_kparam:
+ append += f' --append={p}'
+ command = BOOT_CMD + append
+ test_params = ""
+ for i, key in enumerate(input_options.keys()):
+ param = f'{key}={combination[i]}'
+ test_params += f' {param}'
+ command += f" --append={param}"
+ command += f" -- {TEST}"
+ test_name = f"{bug} {test_params}"
+ pretty_print(f'# Testing {test_name}')
+ t = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ t.wait()
+ output, _ = t.communicate()
+ if t.returncode == 0:
+ ksft.test_result_pass(test_name)
+ else:
+ ksft.test_result_fail(test_name)
+ output = output.decode()
+ log += f" {output}"
+ pretty_print(log)
+ logs += output + "\n"
+
+# Optionally use tappy to parse the output
+# apt install python3-tappy
+with open("logs.txt", "w") as f:
+ f.write(logs)
+
+ksft.finished()
--- /dev/null
+++ b/tools/testing/selftests/x86/bugs/its_ret_alignment.py
@@ -0,0 +1,139 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (c) 2025 Intel Corporation
+#
+# Test for indirect target selection (ITS) mitigation.
+#
+# Tests if the RETs are correctly patched by evaluating the
+# vmlinux .return_sites in /proc/kcore.
+#
+# Install dependencies
+# add-apt-repository ppa:michel-slm/kernel-utils
+# apt update
+# apt install -y python3-drgn python3-pyelftools python3-capstone
+#
+# Run on target machine
+# mkdir -p /usr/lib/debug/lib/modules/$(uname -r)
+# cp $VMLINUX /usr/lib/debug/lib/modules/$(uname -r)/vmlinux
+#
+# Usage: ./its_ret_alignment.py
+
+import os, sys, argparse
+from pathlib import Path
+
+this_dir = os.path.dirname(os.path.realpath(__file__))
+sys.path.insert(0, this_dir + '/../../kselftest')
+import ksft
+import common as c
+
+bug = "indirect_target_selection"
+mitigation = c.get_sysfs(bug)
+if not mitigation or "Aligned branch/return thunks" not in mitigation:
+ ksft.test_result_skip("Skipping its_ret_alignment.py: Aligned branch/return thunks not enabled")
+ ksft.finished()
+
+c.check_dependencies_or_skip(['drgn', 'elftools', 'capstone'], script_name="its_ret_alignment.py")
+
+from elftools.elf.elffile import ELFFile
+from drgn.helpers.common.memory import identify_address
+
+cap = c.init_capstone()
+
+if len(os.sys.argv) > 1:
+ arg_vmlinux = os.sys.argv[1]
+ if not os.path.exists(arg_vmlinux):
+ ksft.test_result_fail(f"its_ret_alignment.py: vmlinux not found at user-supplied path: {arg_vmlinux}")
+ ksft.exit_fail()
+ os.makedirs(f"/usr/lib/debug/lib/modules/{os.uname().release}", exist_ok=True)
+ os.system(f'cp {arg_vmlinux} /usr/lib/debug/lib/modules/$(uname -r)/vmlinux')
+
+vmlinux = f"/usr/lib/debug/lib/modules/{os.uname().release}/vmlinux"
+if not os.path.exists(vmlinux):
+ ksft.test_result_fail(f"its_ret_alignment.py: vmlinux not found at {vmlinux}")
+ ksft.exit_fail()
+
+ksft.print_msg(f"Using vmlinux: {vmlinux}")
+
+rethunks_start_vmlinux, rethunks_sec_offset, size = c.get_section_info(vmlinux, '.return_sites')
+ksft.print_msg(f"vmlinux: Section .return_sites (0x{rethunks_start_vmlinux:x}) found at 0x{rethunks_sec_offset:x} with size 0x{size:x}")
+
+sites_offset = c.get_patch_sites(vmlinux, rethunks_sec_offset, size)
+total_rethunk_tests = len(sites_offset)
+ksft.print_msg(f"Found {total_rethunk_tests} rethunk sites")
+
+prog = c.get_runtime_kernel()
+rethunks_start_kcore = prog.symbol('__return_sites').address
+ksft.print_msg(f'kcore: __rethunk_sites: 0x{rethunks_start_kcore:x}')
+
+its_return_thunk = prog.symbol('its_return_thunk').address
+ksft.print_msg(f'kcore: its_return_thunk: 0x{its_return_thunk:x}')
+
+tests_passed = 0
+tests_failed = 0
+tests_unknown = 0
+tests_skipped = 0
+
+with open(vmlinux, 'rb') as f:
+ elffile = ELFFile(f)
+ text_section = elffile.get_section_by_name('.text')
+
+ for i in range(len(sites_offset)):
+ site = rethunks_start_kcore + sites_offset[i]
+ vmlinux_site = rethunks_start_vmlinux + sites_offset[i]
+ try:
+ passed = unknown = failed = skipped = False
+
+ symbol = identify_address(prog, site)
+ vmlinux_insn = c.get_instruction_from_vmlinux(elffile, text_section, text_section['sh_addr'], vmlinux_site)
+ kcore_insn = list(cap.disasm(prog.read(site, 16), site))[0]
+
+ insn_end = site + kcore_insn.size - 1
+
+ safe_site = insn_end & 0x20
+ site_status = "" if safe_site else "(unsafe)"
+
+ ksft.print_msg(f"\nSite {i}: {symbol} <0x{site:x}> {site_status}")
+ ksft.print_msg(f"\tvmlinux: 0x{vmlinux_insn.address:x}:\t{vmlinux_insn.mnemonic}\t{vmlinux_insn.op_str}")
+ ksft.print_msg(f"\tkcore: 0x{kcore_insn.address:x}:\t{kcore_insn.mnemonic}\t{kcore_insn.op_str}")
+
+ if safe_site:
+ tests_passed += 1
+ passed = True
+ ksft.print_msg(f"\tPASSED: At safe address")
+ continue
+
+ if "jmp" in kcore_insn.mnemonic:
+ passed = True
+ elif "ret" not in kcore_insn.mnemonic:
+ skipped = True
+
+ if passed:
+ ksft.print_msg(f"\tPASSED: Found {kcore_insn.mnemonic} {kcore_insn.op_str}")
+ tests_passed += 1
+ elif skipped:
+ ksft.print_msg(f"\tSKIPPED: Found '{kcore_insn.mnemonic}'")
+ tests_skipped += 1
+ elif unknown:
+ ksft.print_msg(f"UNKNOWN: An unknown instruction: {kcore_insn}")
+ tests_unknown += 1
+ else:
+ ksft.print_msg(f'\t************* FAILED *************')
+ ksft.print_msg(f"\tFound {kcore_insn.mnemonic} {kcore_insn.op_str}")
+ ksft.print_msg(f'\t**********************************')
+ tests_failed += 1
+ except Exception as e:
+ ksft.print_msg(f"UNKNOWN: An unexpected error occurred: {e}")
+ tests_unknown += 1
+
+ksft.print_msg(f"\n\nSummary:")
+ksft.print_msg(f"PASSED: \t{tests_passed} \t/ {total_rethunk_tests}")
+ksft.print_msg(f"FAILED: \t{tests_failed} \t/ {total_rethunk_tests}")
+ksft.print_msg(f"SKIPPED: \t{tests_skipped} \t/ {total_rethunk_tests}")
+ksft.print_msg(f"UNKNOWN: \t{tests_unknown} \t/ {total_rethunk_tests}")
+
+if tests_failed == 0:
+ ksft.test_result_pass("All ITS return thunk sites passed.")
+else:
+ ksft.test_result_fail(f"{tests_failed} failed sites need ITS return thunks.")
+ksft.finished()
--- /dev/null
+++ b/tools/testing/selftests/x86/bugs/its_sysfs.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (c) 2025 Intel Corporation
+#
+# Test for Indirect Target Selection(ITS) mitigation sysfs status.
+
+import sys, os, re
+this_dir = os.path.dirname(os.path.realpath(__file__))
+sys.path.insert(0, this_dir + '/../../kselftest')
+import ksft
+
+from common import *
+
+bug = "indirect_target_selection"
+mitigation = get_sysfs(bug)
+
+ITS_MITIGATION_ALIGNED_THUNKS = "Mitigation: Aligned branch/return thunks"
+ITS_MITIGATION_RETPOLINE_STUFF = "Mitigation: Retpolines, Stuffing RSB"
+ITS_MITIGATION_VMEXIT_ONLY = "Mitigation: Vulnerable, KVM: Not affected"
+ITS_MITIGATION_VULNERABLE = "Vulnerable"
+
+def check_mitigation():
+ if mitigation == ITS_MITIGATION_ALIGNED_THUNKS:
+ if cmdline_has(f'{bug}=stuff') and sysfs_has("spectre_v2", "Retpolines"):
+ bug_check_fail(bug, ITS_MITIGATION_ALIGNED_THUNKS, ITS_MITIGATION_RETPOLINE_STUFF)
+ return
+ if cmdline_has(f'{bug}=vmexit') and cpuinfo_has('its_native_only'):
+ bug_check_fail(bug, ITS_MITIGATION_ALIGNED_THUNKS, ITS_MITIGATION_VMEXIT_ONLY)
+ return
+ bug_check_pass(bug, ITS_MITIGATION_ALIGNED_THUNKS)
+ return
+
+ if mitigation == ITS_MITIGATION_RETPOLINE_STUFF:
+ if cmdline_has(f'{bug}=stuff') and sysfs_has("spectre_v2", "Retpolines"):
+ bug_check_pass(bug, ITS_MITIGATION_RETPOLINE_STUFF)
+ return
+ if sysfs_has('retbleed', 'Stuffing'):
+ bug_check_pass(bug, ITS_MITIGATION_RETPOLINE_STUFF)
+ return
+ bug_check_fail(bug, ITS_MITIGATION_RETPOLINE_STUFF, ITS_MITIGATION_ALIGNED_THUNKS)
+
+ if mitigation == ITS_MITIGATION_VMEXIT_ONLY:
+ if cmdline_has(f'{bug}=vmexit') and cpuinfo_has('its_native_only'):
+ bug_check_pass(bug, ITS_MITIGATION_VMEXIT_ONLY)
+ return
+ bug_check_fail(bug, ITS_MITIGATION_VMEXIT_ONLY, ITS_MITIGATION_ALIGNED_THUNKS)
+
+ if mitigation == ITS_MITIGATION_VULNERABLE:
+ if sysfs_has("spectre_v2", "Vulnerable"):
+ bug_check_pass(bug, ITS_MITIGATION_VULNERABLE)
+ else:
+ bug_check_fail(bug, "Mitigation", ITS_MITIGATION_VULNERABLE)
+
+ bug_status_unknown(bug, mitigation)
+ return
+
+ksft.print_header()
+ksft.set_plan(1)
+ksft.print_msg(f'{bug}: {mitigation} ...')
+
+if not basic_checks_sufficient(bug, mitigation):
+ check_mitigation()
+
+ksft.finished()
next prev parent reply other threads:[~2025-05-12 17:52 UTC|newest]
Thread overview: 224+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-12 17:37 [PATCH 6.14 000/197] 6.14.7-rc1 review Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 001/197] dm: add missing unlock on in dm_keyslot_evict() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 002/197] fs/erofs/fileio: call erofs_onlinefolio_split() after bio_add_folio() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 003/197] Revert "btrfs: canonicalize the device path before adding it" Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 004/197] arm64: dts: imx8mm-verdin: Link reg_usdhc2_vqmmc to usdhc2 Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 005/197] firmware: arm_scmi: Fix timeout checks on polling path Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 006/197] can: mcan: m_can_class_unregister(): fix order of unregistration calls Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 007/197] s390/pci: Fix missing check for zpci_create_device() error return Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 008/197] wifi: cfg80211: fix out-of-bounds access during multi-link element defragmentation Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 009/197] vfio/pci: Align huge faults to order Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 010/197] s390/pci: Fix duplicate pci_dev_put() in disable_slot() when PF has child VFs Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 011/197] can: mcp251xfd: mcp251xfd_remove(): fix order of unregistration calls Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 012/197] can: rockchip_canfd: rkcanfd_remove(): " Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 013/197] ksmbd: prevent rename with empty string Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 014/197] ksmbd: prevent out-of-bounds stream writes by validating *pos Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 015/197] ksmbd: Fix UAF in __close_file_table_ids Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 016/197] openvswitch: Fix unsafe attribute parsing in output_userspace() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 017/197] ksmbd: fix memory leak in parse_lease_state() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 018/197] s390/entry: Fix last breaking event handling in case of stack corruption Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 019/197] sch_htb: make htb_deactivate() idempotent Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 020/197] virtio-net: dont re-enable refill work too early when NAPI is disabled Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 021/197] virtio-net: free xsk_buffs on error in virtnet_xsk_pool_enable() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 022/197] gre: Fix again IPv6 link-local address generation Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 023/197] net: ethernet: mtk_eth_soc: reset all TX queues on DMA free Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 024/197] net: ethernet: mtk_eth_soc: do not reset PSE when setting FE Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 025/197] can: m_can: m_can_class_allocate_dev(): initialize spin lock on device probe Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 026/197] can: mcp251xfd: fix TDC setting for low data bit rates Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 027/197] can: gw: fix RCU/BH usage in cgw_create_job() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 028/197] wifi: mac80211: fix the type of status_code for negotiated TID to Link Mapping Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 029/197] ice: use DSN instead of PCI BDF for ice_adapter index Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 030/197] erofs: ensure the extra temporary copy is valid for shortened bvecs Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 031/197] ipvs: fix uninit-value for saddr in do_output_route4 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 032/197] netfilter: ipset: fix region locking in hash types Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 033/197] bpf: Scrub packet on bpf_redirect_peer Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 034/197] net: dsa: b53: allow leaky reserved multicast Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 035/197] net: dsa: b53: keep CPU port always tagged again Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 036/197] net: dsa: b53: fix clearing PVID of a port Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 037/197] net: dsa: b53: fix flushing old pvid VLAN on pvid change Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 038/197] net: dsa: b53: fix VLAN ID for untagged vlan on bridge leave Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 039/197] net: dsa: b53: always rejoin default untagged VLAN " Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 040/197] net: dsa: b53: do not allow to configure VLAN 0 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 041/197] net: dsa: b53: do not program vlans when vlan filtering is off Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 042/197] net: dsa: b53: fix toggling vlan_filtering Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 043/197] net: dsa: b53: fix learning on VLAN unaware bridges Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 044/197] net: dsa: b53: do not set learning and unicast/multicast on up Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 045/197] fbnic: Fix initialization of mailbox descriptor rings Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 046/197] fbnic: Gate AXI read/write enabling on FW mailbox Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 047/197] fbnic: Actually flush_tx instead of stalling out Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 048/197] fbnic: Cleanup handling of completions Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 049/197] fbnic: Improve responsiveness of fbnic_mbx_poll_tx_ready Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 050/197] fbnic: Pull fbnic_fw_xmit_cap_msg use out of interrupt context Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 051/197] fbnic: Do not allow mailbox to toggle to ready outside fbnic_mbx_poll_tx_ready Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 052/197] net: export a helper for adding up queue stats Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 053/197] virtio-net: fix total qstat values Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 054/197] Input: cyttsp5 - ensure minimum reset pulse width Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 055/197] Input: cyttsp5 - fix power control issue on wakeup Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 056/197] Input: mtk-pmic-keys - fix possible null pointer dereference Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 057/197] Input: xpad - fix Share button on Xbox One controllers Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 058/197] Input: xpad - add support for 8BitDo Ultimate 2 Wireless Controller Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 059/197] Input: xpad - fix two controller table values Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 060/197] Input: synaptics - enable InterTouch on Dynabook Portege X30-D Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 061/197] Input: synaptics - enable InterTouch on Dynabook Portege X30L-G Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 062/197] Input: synaptics - enable InterTouch on Dell Precision M3800 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 063/197] Input: synaptics - enable SMBus for HP Elitebook 850 G1 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 064/197] Input: synaptics - enable InterTouch on TUXEDO InfinityBook Pro 14 v5 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 065/197] rust: clean Rust 1.88.0s `unnecessary_transmutes` lint Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 066/197] objtool/rust: add one more `noreturn` Rust function for Rust 1.87.0 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 067/197] rust: clean Rust 1.88.0s warning about `clippy::disallowed_macros` configuration Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 068/197] uio_hv_generic: Fix sysfs creation path for ring buffer Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 069/197] staging: iio: adc: ad7816: Correct conditional logic for store mode Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 070/197] staging: bcm2835-camera: Initialise dev in v4l2_dev Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 071/197] staging: axis-fifo: Remove hardware resets for user errors Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 072/197] staging: axis-fifo: Correct handling of tx_fifo_depth for size validation Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 073/197] x86/mm: Eliminate window where TLB flushes may be inadvertently skipped Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 074/197] mm: fix folio_pte_batch() on XEN PV Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 075/197] mm: vmalloc: support more granular vrealloc() sizing Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 076/197] mm/huge_memory: fix dereferencing invalid pmd migration entry Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 077/197] mm/userfaultfd: fix uninitialized output field for -EAGAIN race Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 078/197] selftests/mm: compaction_test: support platform with huge mount of memory Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 079/197] selftests/mm: fix a build failure on powerpc Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 080/197] selftests/mm: fix build break when compiling pkey_util.c Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 081/197] KVM: x86/mmu: Prevent installing hugepages when mem attributes are changing Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 082/197] KVM: SVM: Forcibly leave SMM mode on SHUTDOWN interception Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 083/197] drm/amd/display: Shift DMUB AUX reply command if necessary Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 084/197] riscv: Fix kernel crash due to PR_SET_TAGGED_ADDR_CTRL Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 085/197] io_uring: ensure deferred completions are flushed for multishot Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 086/197] iio: adc: ad7768-1: Fix insufficient alignment of timestamp Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 087/197] iio: adc: ad7266: Fix potential timestamp alignment issue Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 088/197] iio: adc: ad7606: fix serial register access Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 089/197] iio: adc: rockchip: Fix clock initialization sequence Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 090/197] iio: adis16201: Correct inclinometer channel resolution Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 091/197] iio: chemical: sps30: use aligned_s64 for timestamp Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 092/197] iio: chemical: pms7003: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 093/197] iio: hid-sensor-prox: Restore lost scale assignments Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 094/197] iio: hid-sensor-prox: support multi-channel SCALE calculation Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 095/197] iio: hid-sensor-prox: Fix incorrect OFFSET calculation Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 096/197] iio: imu: inv_mpu6050: align buffer for timestamp Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 097/197] iio: imu: st_lsm6dsx: fix possible lockup in st_lsm6dsx_read_fifo Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 098/197] iio: imu: st_lsm6dsx: fix possible lockup in st_lsm6dsx_read_tagged_fifo Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 099/197] iio: light: opt3001: fix deadlock due to concurrent flag access Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 100/197] iio: pressure: mprls0025pa: use aligned_s64 for timestamp Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 101/197] Revert "drm/amd: Stop evicting resources on APUs in suspend" Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 102/197] drm/v3d: Add job to pending list if the reset was skipped Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 103/197] drm/xe: Add page queue multiplier Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 104/197] drm/amdgpu: fix pm notifier handling Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 105/197] drm/amdgpu/vcn: using separate VCN1_AON_SOC offset Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 106/197] drm/amd/display: Fix invalid context error in dml helper Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 107/197] drm/amd/display: more liberal vmin/vmax update for freesync Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 108/197] drm/amd/display: Fix the checking condition in dmub aux handling Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 109/197] drm/amd/display: Remove incorrect checking in dmub aux handler Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 110/197] drm/amd/display: Fix wrong handling for AUX_DEFER case Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 111/197] drm/amd/display: Copy AUX read reply data whenever length > 0 Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 112/197] drm/amdgpu/hdp4: use memcfg register to post the write for HDP flush Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 113/197] drm/amdgpu/hdp5.2: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 114/197] drm/amdgpu/hdp5: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 115/197] drm/amdgpu/hdp6: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 116/197] drm/amdgpu/hdp7: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 117/197] xhci: dbc: Avoid event polling busyloop if pending rx transfers are inactive Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 118/197] usb: uhci-platform: Make the clock really optional Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 119/197] smb: client: Avoid race in open_cached_dir with lease breaks Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 120/197] xen: swiotlb: Use swiotlb bouncing if kmalloc allocation demands it Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 121/197] xenbus: Use kref to track req lifetime Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 122/197] accel/ivpu: Increase state dump msg timeout Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 123/197] arm64: cpufeature: Move arm64_use_ng_mappings to the .data section to prevent wrong idmap generation Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 124/197] clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable() Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 125/197] KVM: arm64: Fix uninitialized memcache pointer in user_mem_abort() Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 126/197] memblock: Accept allocated memory before use in memblock_double_array() Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 127/197] module: ensure that kobject_put() is safe for module type kobjects Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 128/197] x86/microcode: Consolidate the loader enablement checking Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 129/197] ocfs2: fix panic in failed foilio allocation Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 130/197] ocfs2: fix the issue with discontiguous allocation in the global_bitmap Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 131/197] ocfs2: switch osb->disable_recovery to enum Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 132/197] ocfs2: implement handshaking with ocfs2 recovery thread Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 133/197] ocfs2: stop quota recovery before disabling quotas Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 134/197] usb: dwc3: gadget: Make gadget_wakeup asynchronous Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 135/197] usb: cdnsp: Fix issue with resuming from L1 Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 136/197] usb: cdnsp: fix L1 resume issue for RTL_REVISION_NEW_LPM version Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 137/197] usb: gadget: f_ecm: Add get_status callback Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 138/197] usb: gadget: tegra-xudc: ACK ST_RC after clearing CTRL_RUN Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 139/197] usb: gadget: Use get_status callback to set remote wakeup capability Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 140/197] usb: host: tegra: Prevent host controller crash when OTG port is used Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 141/197] usb: misc: onboard_usb_dev: fix support for Cypress HX3 hubs Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 142/197] usb: typec: tcpm: delay SNK_TRY_WAIT_DEBOUNCE to SRC_TRYWAIT transition Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 143/197] usb: typec: ucsi: displayport: Fix deadlock Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 144/197] usb: typec: ucsi: displayport: Fix NULL pointer access Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 145/197] USB: usbtmc: use interruptible sleep in usbtmc_read Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 146/197] usb: usbtmc: Fix erroneous get_stb ioctl error returns Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 147/197] usb: usbtmc: Fix erroneous wait_srq ioctl return Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 148/197] usb: usbtmc: Fix erroneous generic_read " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 149/197] iio: imu: bmi270: fix initial sampling frequency configuration Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 150/197] iio: accel: adxl367: fix setting odr for activity time update Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 151/197] iio: temp: maxim-thermocouple: Fix potential lack of DMA safe buffer Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 152/197] iio: accel: adxl355: Make timestamp 64-bit aligned using aligned_s64 Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 153/197] iio: adc: dln2: Use aligned_s64 for timestamp Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 154/197] MIPS: Fix idle VS timer enqueue Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 155/197] MIPS: Move r4k_wait() to .cpuidle.text section Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 156/197] timekeeping: Prevent coarse clocks going backwards Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 157/197] accel/ivpu: Separate DB ID and CMDQ ID allocations from CMDQ allocation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 158/197] accel/ivpu: Correct mutex unlock order in job submission Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 159/197] MIPS: Fix MAX_REG_OFFSET Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 160/197] riscv: misaligned: Add handling for ZCB instructions Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 161/197] loop: factor out a loop_assign_backing_file helper Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 162/197] loop: Add sanity check for read/write_iter Greg Kroah-Hartman
2025-05-20 0:19 ` Justin Forbes
2025-05-20 4:56 ` Greg Kroah-Hartman
2025-05-20 15:22 ` Jens Axboe
2025-05-20 16:09 ` Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 163/197] drm/panel: simple: Update timings for AUO G101EVN010 Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 164/197] nvme: unblock ctrl state transition for firmware update Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 165/197] riscv: misaligned: factorize trap handling Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 166/197] riscv: misaligned: enable IRQs while handling misaligned accesses Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 167/197] riscv: Disallow PR_GET_TAGGED_ADDR_CTRL without Supm Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 168/197] drm/xe/tests/mocs: Hold XE_FORCEWAKE_ALL for LNCF regs Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 169/197] drm/xe: Release force wake first then runtime power Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 170/197] io_uring/sqpoll: Increase task_work submission batch size Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 171/197] do_umount(): add missing barrier before refcount checks in sync case Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 172/197] rust: allow Rust 1.87.0s `clippy::ptr_eq` lint Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 173/197] rust: clean Rust 1.88.0s `clippy::uninlined_format_args` lint Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 174/197] io_uring: always arm linked timeouts prior to issue Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 175/197] Bluetooth: btmtk: Remove the resetting step before downloading the fw Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 176/197] mm: page_alloc: dont steal single pages from biggest buddy Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 177/197] mm: page_alloc: speed up fallbacks in rmqueue_bulk() Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 178/197] arm64: insn: Add support for encoding DSB Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 179/197] arm64: proton-pack: Expose whether the platform is mitigated by firmware Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 180/197] arm64: proton-pack: Expose whether the branchy loop k value Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 181/197] arm64: bpf: Add BHB mitigation to the epilogue for cBPF programs Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 182/197] arm64: bpf: Only mitigate cBPF programs loaded by unprivileged users Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 183/197] arm64: proton-pack: Add new CPUs k values for branch mitigation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 184/197] x86/bpf: Call branch history clearing sequence on exit Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 185/197] x86/bpf: Add IBHF call at end of classic BPF Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 186/197] x86/bhi: Do not set BHI_DIS_S in 32-bit mode Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 187/197] Documentation: x86/bugs/its: Add ITS documentation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 188/197] x86/its: Enumerate Indirect Target Selection (ITS) bug Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 189/197] x86/its: Add support for ITS-safe indirect thunk Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 190/197] x86/its: Add support for ITS-safe return thunk Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 191/197] x86/its: Enable Indirect Target Selection mitigation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 192/197] x86/its: Add "vmexit" option to skip mitigation on some CPUs Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 193/197] x86/its: Add support for RSB stuffing mitigation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 194/197] x86/its: Align RETs in BHB clear sequence to avoid thunking Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 195/197] x86/ibt: Keep IBT disabled during alternative patching Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 196/197] x86/its: Use dynamic thunks for indirect branches Greg Kroah-Hartman
2025-05-12 17:40 ` Greg Kroah-Hartman [this message]
2025-05-12 19:30 ` [PATCH 6.14 000/197] 6.14.7-rc1 review Pavel Machek
2025-05-12 20:56 ` Jon Hunter
2025-05-13 0:26 ` Christian Heusel
2025-05-13 6:24 ` Luna Jernberg
2025-05-13 13:07 ` Mario Limonciello
2025-05-15 12:34 ` Luna Jernberg
2025-05-15 12:40 ` Christian Heusel
2025-05-13 9:41 ` Ron Economos
2025-05-13 9:45 ` Mark Brown
2025-05-13 10:40 ` Naresh Kamboju
2025-05-13 13:29 ` Naresh Kamboju
2025-05-14 9:53 ` Greg Kroah-Hartman
2025-05-13 11:38 ` Takeshi Ogasawara
2025-05-13 12:54 ` Florian Fainelli
2025-05-13 14:58 ` Markus Reichelt
2025-05-13 17:27 ` Peter Schneider
2025-05-13 17:30 ` Shuah Khan
2025-05-14 7:50 ` Christian Heusel
2025-05-14 11:49 ` Shung-Hsi Yu
2025-05-15 4:17 ` Pawan Gupta
2025-05-15 12:04 ` Shung-Hsi Yu
2025-05-14 16:45 ` Hardik Garg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250512172052.439043944@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=dave.hansen@linux.intel.com \
--cc=patches@lists.linux.dev \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=stable@vger.kernel.org \
--cc=tao1.zhang@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.