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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox