From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: acme@kernel.org, gmx@google.com, james.clark@linaro.org,
adrian.hunter@intel.com, jolsa@kernel.org,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
mingo@redhat.com, peterz@infradead.org
Subject: Re: [PATCH v6 5/6] perf test: Add inject ASLR test
Date: Mon, 11 May 2026 00:34:51 -0700 [thread overview]
Message-ID: <agGGm-QVsBb_apge@z2> (raw)
In-Reply-To: <20260508082726.2795191-6-irogers@google.com>
On Fri, May 08, 2026 at 01:27:25AM -0700, Ian Rogers wrote:
> Add a new shell test `inject_aslr.sh` to verify the `perf inject --aslr`
> feature. The test covers:
> - Basic address remapping for user space samples.
> - Pipe mode coverage for `perf record` piped into `perf inject --aslr`.
> - Callchain address remapping.
> - Consistency of `perf report` output before and after injection.
> - Pipe mode report consistency.
> - Dropping of samples that leak ASLR info (physical addresses).
> - Kernel address remapping (utilizing a dedicated kernel-intensive VFS dd workload
> to guarantee continuous timer interrupts sampling flow inside kernel privilege states).
> - Kernel report consistency with address normalization.
>
> The test suite is hardened with global 'set -o pipefail' assertions to catch
> pipeline failures, stream-consuming awk processors to handle SIGPIPE signals,
> and a dedicated pipe output scenario validating raw 'perf inject -o -' stdout
> streams.
>
> Assisted-by: Gemini-CLI:Google Gemini 3
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> v6: Refactor kernel-space sampling test cases to utilize a dedicated
> system-call intensive VFS dd workload (kprog) instead of purely
> userspace-bound tight loops, guaranteeing high-density kernel
> privilege state sampling streams and eliminating intermittent
> execution flakiness dropouts.
>
> v5: Harden test suite verification pipelines by upgrading report
> checks to strict sorted line-by-line diff comparisons to
> accommodate remapped pointer shifts. Append || true fallback
> operators to grep-v filtering pipelines to prevent the shell test
> from spuriously aborting under set -o pipefail on empty inputs,
> ensuring graceful failure checks trigger correctly.
>
> v4: Reorder set -e/pipefail to prevent temp file leakage in root
> directory on unprivileged record failures when run as root. Ensure
> grep report filters have || true suffixes to avoid aborts under
> pipefail. Add comprehensive pipe stdout injection attributes
> validation case.
>
> v3: Harden script with pipefail, SIGPIPE awk pipeline fixes, callchain
> empty data asserts, baseline sample verification, and grep report
> abort protections. Reorder set -e/pipefail to prevent stack leaks
> in mktemp failures.
>
> v2: Add sum comparison for kernel overhead and 32-bit math corrections. Add
> awk with gsub for trailing dots and brackets normalizations. Trap EXIT,
> prevent race conditions and avoid hardcoded perf binary.
> ---
> tools/perf/tests/shell/inject_aslr.sh | 460 ++++++++++++++++++++++++++
> 1 file changed, 460 insertions(+)
> create mode 100755 tools/perf/tests/shell/inject_aslr.sh
>
> diff --git a/tools/perf/tests/shell/inject_aslr.sh b/tools/perf/tests/shell/inject_aslr.sh
> new file mode 100755
> index 000000000000..6363a0f69d2b
> --- /dev/null
> +++ b/tools/perf/tests/shell/inject_aslr.sh
> @@ -0,0 +1,460 @@
> +#!/bin/bash
> +# perf inject --aslr test
> +# SPDX-License-Identifier: GPL-2.0
> +
> +set -e
> +set -o pipefail
> +
> +shelldir=$(dirname "$0")
> +# shellcheck source=lib/perf_has_symbol.sh
> +. "${shelldir}"/lib/perf_has_symbol.sh
> +
> +sym="noploop"
> +
> +skip_test_missing_symbol ${sym}
> +
> +# Create global temp directory
> +temp_dir=$(mktemp -d /tmp/perf-test-aslr.XXXXXXXXXX)
> +data="${temp_dir}/perf.data"
> +data2="${temp_dir}/perf.data2"
> +
> +prog="perf test -w noploop"
> +[ "$(uname -m)" = "s390x" ] && prog="$prog 3"
> +err=0
> +kprog="dd if=/dev/zero of=/dev/null bs=1M count=500"
> +
> +cleanup() {
> + # Check if temp_dir is set and looks sane before removing
> + if [[ "${temp_dir}" =~ ^/tmp/perf-test-aslr\. ]]; then
> + rm -rf "${temp_dir}"
> + fi
> +}
> +
> +trap_cleanup() {
> + cleanup
> + exit 1
> +}
> +
> +trap cleanup EXIT
> +trap trap_cleanup TERM INT
> +
> +get_noploop_addr() {
> + local file=$1
> + perf script -i "$file" | awk '
> + BEGIN { found=0 }
> + {
> + for (i=1; i<=NF; i++) {
> + if ($i ~ /noploop\+/) {
> + if (!found) {
> + print $(i-1)
> + found=1
> + }
> + }
> + }
> + }'
> +}
> +
> +test_basic_aslr() {
> + echo "Test basic ASLR remapping"
> + local data
> + data=$(mktemp "${temp_dir}/perf.data.basic.XXXXXX")
> + local data2
> + data2=$(mktemp "${temp_dir}/perf.data2.basic.XXXXXX")
Why not use the globally defined data and data2 here and below?
Thanks,
Namhyung
> +
> + perf record -e task-clock:u -o "${data}" ${prog}
> + perf inject -v --aslr -i "${data}" -o "${data2}"
> +
> + orig_addr=$(get_noploop_addr "${data}")
> + new_addr=$(get_noploop_addr "${data2}")
> +
> + echo "Basic ASLR: orig_addr=$orig_addr, new_addr=$new_addr"
> +
> + if [ -z "$orig_addr" ]; then
> + echo "Basic ASLR test [Failed - no noploop samples in original file]"
> + err=1
> + elif [ -z "$new_addr" ]; then
> + echo "Basic ASLR test [Failed - could not find remapped address]"
> + err=1
> + elif [ "$orig_addr" = "$new_addr" ]; then
> + echo "Basic ASLR test [Failed - addresses are not remapped]"
> + err=1
> + else
> + echo "Basic ASLR test [Success]"
> + fi
> +}
> +
> +test_pipe_aslr() {
> + echo "Test pipe mode ASLR remapping"
> + local data
> + data=$(mktemp "${temp_dir}/perf.data.pipe.XXXXXX")
> + local data2
> + data2=$(mktemp "${temp_dir}/perf.data2.pipe.XXXXXX")
> +
> + # Use tee to save the original pipe data for comparison
> + perf record -e task-clock:u -o - ${prog} | tee "${data}" | perf inject --aslr -o "${data2}"
> +
> + orig_addr=$(get_noploop_addr "${data}")
> + new_addr=$(get_noploop_addr "${data2}")
> +
> + echo "Pipe ASLR: orig_addr=$orig_addr, new_addr=$new_addr"
> +
> + if [ -z "$orig_addr" ]; then
> + echo "Pipe ASLR test [Failed - no noploop samples in original file]"
> + err=1
> + elif [ -z "$new_addr" ]; then
> + echo "Pipe ASLR test [Failed - could not find remapped address]"
> + err=1
> + elif [ "$orig_addr" = "$new_addr" ]; then
> + echo "Pipe ASLR test [Failed - addresses are not remapped]"
> + err=1
> + else
> + echo "Pipe ASLR test [Success]"
> + fi
> +}
> +
> +test_callchain_aslr() {
> + echo "Test Callchain ASLR remapping"
> + local data
> + data=$(mktemp "${temp_dir}/perf.data.callchain.XXXXXX")
> + local data2
> + data2=$(mktemp "${temp_dir}/perf.data2.callchain.XXXXXX")
> +
> + perf record -g -e task-clock:u -o "${data}" ${prog}
> + perf inject --aslr -i "${data}" -o "${data2}"
> +
> + orig_addr=$(get_noploop_addr "${data}")
> + new_addr=$(get_noploop_addr "${data2}")
> +
> + echo "Callchain ASLR: orig_addr=$orig_addr, new_addr=$new_addr"
> +
> + if [ -z "$orig_addr" ]; then
> + echo "Callchain ASLR test [Failed - no noploop samples in original file]"
> + err=1
> + elif [ -z "$new_addr" ]; then
> + echo "Callchain ASLR test [Failed - could not find remapped address]"
> + err=1
> + elif [ "$orig_addr" = "$new_addr" ]; then
> + echo "Callchain ASLR test [Failed - addresses are not remapped]"
> + err=1
> + else
> + # Extract callchain addresses (indented lines starting with hex addresses)
> + orig_callchain=$(perf script -i "${data}" | awk '/^[[:space:]]+[0-9a-f]+/ {print $1}')
> + new_callchain=$(perf script -i "${data2}" | awk '/^[[:space:]]+[0-9a-f]+/ {print $1}')
> +
> + if [ -z "$orig_callchain" ]; then
> + echo "Callchain ASLR test [Failed - no callchain samples in original file]"
> + err=1
> + elif [ -z "$new_callchain" ]; then
> + echo "Callchain ASLR test [Failed - callchain data was dropped]"
> + err=1
> + elif [ "$orig_callchain" = "$new_callchain" ]; then
> + echo "Callchain ASLR test [Failed - callchain addresses were not remapped]"
> + err=1
> + else
> + echo "Callchain ASLR test [Success]"
> + fi
> + fi
> +}
> +
> +test_report_aslr() {
> + echo "Test perf report consistency"
> + local data
> + data=$(mktemp "${temp_dir}/perf.data.report.XXXXXX")
> + local data2
> + data2=$(mktemp "${temp_dir}/perf.data2.report.XXXXXX")
> + local data_clean
> + data_clean=$(mktemp "${temp_dir}/perf.data.clean.XXXXXX")
> +
> + perf record -e task-clock:u -o "${data}" ${prog}
> + # Use -b to inject build-ids and force ordered events processing in both
> + perf inject -b -i "${data}" -o "${data_clean}"
> + perf inject -v -b --aslr -i "${data}" -o "${data2}"
> +
> + local report1="${temp_dir}/report1"
> + local report2="${temp_dir}/report2"
> + local report1_clean="${temp_dir}/report1.clean"
> + local report2_clean="${temp_dir}/report2.clean"
> + local diff_file="${temp_dir}/diff"
> +
> + perf report -i "${data_clean}" --stdio > "${report1}"
> + perf report -i "${data2}" --stdio > "${report2}"
> +
> + # Strip headers and compare lines with percentages
> + grep '%' "${report1}" | grep -v '^#' | sort > "${report1_clean}" || true
> + grep '%' "${report2}" | grep -v '^#' | sort > "${report2_clean}" || true
> +
> + diff -u -w "${report1_clean}" "${report2_clean}" > "${diff_file}" || true
> +
> + if [ ! -s "${report1_clean}" ]; then
> + echo "Report ASLR test [Failed - no samples captured]"
> + err=1
> + elif [ -s "${diff_file}" ]; then
> + echo "Report ASLR test [Failed - reports differ]"
> + echo "Showing first 20 lines of diff:"
> + head -n 20 "${diff_file}"
> + err=1
> + else
> + echo "Report ASLR test [Success]"
> + fi
> +}
> +
> +test_pipe_report_aslr() {
> + echo "Test pipe mode perf report consistency"
> + local data
> + data=$(mktemp "${temp_dir}/perf.data.pipe_report.XXXXXX")
> + local data2
> + data2=$(mktemp "${temp_dir}/perf.data2.pipe_report.XXXXXX")
> + local data_clean
> + data_clean=$(mktemp "${temp_dir}/perf.data.clean.XXXXXX")
> +
> + # Use tee to save the original pipe data, then process it with inject -b
> + perf record -e task-clock:u -o - ${prog} | \
> + tee "${data}" | \
> + perf inject -b --aslr -o "${data2}"
> + perf inject -b -i "${data}" -o "${data_clean}"
> +
> + local report1="${temp_dir}/report1"
> + local report2="${temp_dir}/report2"
> + local report1_clean="${temp_dir}/report1.clean"
> + local report2_clean="${temp_dir}/report2.clean"
> + local diff_file="${temp_dir}/diff"
> +
> + perf report -i "${data_clean}" --stdio > "${report1}"
> + perf report -i "${data2}" --stdio > "${report2}"
> +
> + # Strip headers and compare lines with percentages
> + grep '%' "${report1}" | grep -v '^#' | sort > "${report1_clean}" || true
> + grep '%' "${report2}" | grep -v '^#' | sort > "${report2_clean}" || true
> +
> + diff -u -w "${report1_clean}" "${report2_clean}" > "${diff_file}" || true
> +
> + if [ ! -s "${report1_clean}" ]; then
> + echo "Pipe Report ASLR test [Failed - no samples captured]"
> + err=1
> + elif [ -s "${diff_file}" ]; then
> + echo "Pipe Report ASLR test [Failed - reports differ]"
> + echo "Showing first 20 lines of diff:"
> + head -n 20 "${diff_file}"
> + err=1
> + else
> + echo "Pipe Report ASLR test [Success]"
> + fi
> +}
> +
> +test_pipe_out_report_aslr() {
> + echo "Test pipe output mode perf report consistency"
> + local data
> + data=$(mktemp "${temp_dir}/perf.data.pipe_out_report.XXXXXX")
> + local data_clean
> + data_clean=$(mktemp "${temp_dir}/perf.data.clean.XXXXXX")
> +
> + perf record -e task-clock:u -o "${data}" ${prog}
> + perf inject -b -i "${data}" -o "${data_clean}"
> +
> + local report1="${temp_dir}/report1"
> + local report2="${temp_dir}/report2"
> + local report1_clean="${temp_dir}/report1.clean"
> + local report2_clean="${temp_dir}/report2.clean"
> + local diff_file="${temp_dir}/diff"
> +
> + perf report -i "${data_clean}" --stdio > "${report1}"
> + perf inject -b --aslr -i "${data}" -o - | perf report -i - --stdio > "${report2}"
> +
> + # Strip headers and compare lines with percentages
> + grep '%' "${report1}" | grep -v '^#' | sort > "${report1_clean}" || true
> + grep '%' "${report2}" | grep -v '^#' | sort > "${report2_clean}" || true
> +
> + diff -u -w "${report1_clean}" "${report2_clean}" > "${diff_file}" || true
> +
> + if [ ! -s "${report1_clean}" ]; then
> + echo "Pipe Output Report ASLR test [Failed - no samples captured]"
> + err=1
> + elif [ -s "${diff_file}" ]; then
> + echo "Pipe Output Report ASLR test [Failed - reports differ]"
> + echo "Showing first 20 lines of diff:"
> + head -n 20 "${diff_file}"
> + err=1
> + else
> + echo "Pipe Output Report ASLR test [Success]"
> + fi
> +}
> +
> +test_dropped_samples() {
> + echo "Test dropped samples (phys-data)"
> + local data
> + data=$(mktemp "${temp_dir}/perf.data.dropped.XXXXXX")
> + local data2
> + data2=$(mktemp "${temp_dir}/perf.data2.dropped.XXXXXX")
> +
> + # Check if --phys-data is supported by recording a short run
> + if ! perf record -e task-clock:u --phys-data -o "${data}" -- sleep 0.1 > /dev/null 2>&1; then
> + echo "Skipping dropped samples test as --phys-data is not supported"
> + return
> + fi
> +
> + perf record -e task-clock:u --phys-data -o "${data}" ${prog}
> + perf inject --aslr -i "${data}" -o "${data2}"
> +
> + # Verify that the original file actually contained samples!
> + orig_samples=$(perf script -i "${data}" | wc -l)
> + if [ "$orig_samples" -eq 0 ]; then
> + echo "Dropped samples test [Failed - no samples in original file]"
> + err=1
> + else
> + # Verify that samples are dropped.
> + samples_count=$(perf script -i "${data2}" | wc -l)
> +
> + if [ "$samples_count" -gt 0 ]; then
> + echo "Dropped samples test [Failed - samples were not dropped]"
> + err=1
> + else
> + echo "Dropped samples test [Success]"
> + fi
> + fi
> +}
> +
> +test_kernel_aslr() {
> + echo "Test kernel ASLR remapping"
> + local kdata
> + kdata=$(mktemp "${temp_dir}/perf.data.kernel.XXXXXX")
> + local kdata2
> + kdata2=$(mktemp "${temp_dir}/perf.data2.kernel.XXXXXX")
> + local log_file
> + log_file=$(mktemp "${temp_dir}/kernel_record.log.XXXXXX")
> +
> + # Try to record kernel samples
> + if ! perf record -e task-clock:k -o "${kdata}" ${kprog} > "${log_file}" 2>&1; then
> + echo "Skipping kernel ASLR test as recording failed (maybe no permissions)"
> + return
> + fi
> +
> + # Check for warning about kernel map restriction
> + if grep -q "Couldn't record kernel reference relocation symbol" "${log_file}"; then
> + echo "Skipping kernel ASLR test as kernel map could not be recorded (permissions restricted)"
> + return
> + fi
> +
> + perf inject -v --aslr -i "${kdata}" -o "${kdata2}"
> +
> + # Check if kernel addresses are remapped.
> + # Find the field that ends with :k: (the event name) and take the next field!
> + orig_addr=$(perf script -i "${kdata}" | awk '
> + BEGIN { found=0 }
> + {
> + for (i=1; i<NF; i++) {
> + if ($i ~ /:[k]+:?$/) {
> + if (!found) {
> + print $(i+1)
> + found=1
> + }
> + }
> + }
> + }')
> + new_addr=$(perf script -i "${kdata2}" | awk '
> + BEGIN { found=0 }
> + {
> + for (i=1; i<NF; i++) {
> + if ($i ~ /:[k]+:?$/) {
> + if (!found) {
> + print $(i+1)
> + found=1
> + }
> + }
> + }
> + }')
> +
> + echo "Kernel ASLR: orig_addr=$orig_addr, new_addr=$new_addr"
> +
> + if [ -z "$orig_addr" ]; then
> + echo "Kernel ASLR test [Failed - no kernel samples in original file]"
> + err=1
> + elif [ -z "$new_addr" ]; then
> + echo "Kernel ASLR test [Failed - could not find remapped address]"
> + err=1
> + elif [ "$orig_addr" = "$new_addr" ]; then
> + echo "Kernel ASLR test [Failed - addresses are not remapped]"
> + err=1
> + else
> + echo "Kernel ASLR test [Success]"
> + fi
> +}
> +
> +test_kernel_report_aslr() {
> + echo "Test kernel perf report consistency"
> + local kdata
> + kdata=$(mktemp "${temp_dir}/perf.data.kernel_report.XXXXXX")
> + local kdata2
> + kdata2=$(mktemp "${temp_dir}/perf.data2.kernel_report.XXXXXX")
> + local data_clean
> + data_clean=$(mktemp "${temp_dir}/perf.data.clean.XXXXXX")
> + local log_file
> + log_file=$(mktemp "${temp_dir}/kernel_report_record.log.XXXXXX")
> +
> + # Try to record kernel samples
> + if ! perf record -e task-clock:k -o "${kdata}" ${kprog} > "${log_file}" 2>&1; then
> + echo "Skipping kernel report test as recording failed (maybe no permissions)"
> + return
> + fi
> +
> + # Check for warning about kernel map restriction
> + if grep -q "Couldn't record kernel reference relocation symbol" "${log_file}"; then
> + echo "Skipping kernel report test as kernel map could not be recorded (permissions restricted)"
> + return
> + fi
> +
> + # Use -b to inject build-ids and force ordered events processing in both
> + perf inject -b -i "${kdata}" -o "${data_clean}"
> + perf inject -v -b --aslr -i "${kdata}" -o "${kdata2}"
> +
> + local report1="${temp_dir}/report_kernel1"
> + local report2="${temp_dir}/report_kernel2"
> + local report1_clean="${temp_dir}/report_kernel1.clean"
> + local report2_clean="${temp_dir}/report_kernel2.clean"
> +
> + perf report -i "${data_clean}" --stdio > "${report1}"
> + perf report -i "${kdata2}" --stdio > "${report2}"
> +
> + # Strip headers and compare lines with percentages
> + grep '%' "${report1}" | grep -v '^#' > "${report1_clean}" || true
> + grep '%' "${report2}" | grep -v '^#' > "${report2_clean}" || true
> +
> + # Normalize kernel DSOs and addresses in clean reports
> + # This allows kernel modules to be either a module or kernel.kallsyms
> + local report1_norm="${temp_dir}/report_kernel1.norm"
> + local report2_norm="${temp_dir}/report_kernel2.norm"
> + local diff_file="${temp_dir}/diff_kernel"
> +
> + grep -v -E '0x[0-9a-f]{8,}|0000000000000000' "${report1_clean}" | \
> + awk '{gsub(/\[[a-zA-Z0-9_.-]{2,}\](\.[a-zA-Z0-9_]+)?/, "[kernel]", $0); print}' | \
> + sort > "${report1_norm}" || true
> + grep -v -E '0x[0-9a-f]{8,}|0000000000000000' "${report2_clean}" | \
> + awk '{gsub(/\[[a-zA-Z0-9_.-]{2,}\](\.[a-zA-Z0-9_]+)?/, "[kernel]", $0); print}' | \
> + sort > "${report2_norm}" || true
> +
> + diff -u -w "${report1_norm}" "${report2_norm}" > "${diff_file}" || true
> +
> + if [ ! -s "${report1_norm}" ]; then
> + echo "Kernel Report ASLR test [Failed - no samples captured]"
> + err=1
> + elif [ -s "${diff_file}" ]; then
> + echo "Kernel Report ASLR test [Failed - reports differ]"
> + echo "Showing first 20 lines of diff:"
> + head -n 20 "${diff_file}"
> + err=1
> + else
> + echo "Kernel Report ASLR test [Success]"
> + fi
> +}
> +
> +test_basic_aslr
> +test_pipe_aslr
> +test_callchain_aslr
> +test_report_aslr
> +test_pipe_report_aslr
> +test_pipe_out_report_aslr
> +test_dropped_samples
> +test_kernel_aslr
> +test_kernel_report_aslr
> +
> +cleanup
> +exit $err
> --
> 2.54.0.563.g4f69b47b94-goog
>
next prev parent reply other threads:[~2026-05-11 7:34 UTC|newest]
Thread overview: 142+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-24 22:05 [PATCH v1 1/2] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-04-24 22:05 ` [PATCH v1 2/2] perf test: Add inject ASLR test Ian Rogers
2026-04-24 22:47 ` sashiko-bot
2026-04-24 22:36 ` [PATCH v1 1/2] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses sashiko-bot
2026-04-25 2:05 ` [PATCH v2 " Ian Rogers
2026-04-25 2:05 ` [PATCH v2 2/2] perf test: Add inject ASLR test Ian Rogers
2026-05-04 3:51 ` [PATCH v3 0/4] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-04 3:51 ` [PATCH v3 1/4] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-04 3:51 ` [PATCH v3 2/4] perf tool: Fix missing schedstat delegates and dont_split_sample_group in delegate_tool Ian Rogers
2026-05-04 3:51 ` [PATCH v3 3/4] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-04 4:51 ` sashiko-bot
2026-05-04 3:51 ` [PATCH v3 4/4] perf test: Add inject ASLR test Ian Rogers
2026-05-04 5:02 ` sashiko-bot
2026-05-04 7:29 ` [PATCH v4 0/4] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-04 7:29 ` [PATCH v4 1/4] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-04 7:29 ` [PATCH v4 2/4] perf tool: Fix missing schedstat delegates and dont_split_sample_group in delegate_tool Ian Rogers
2026-05-04 7:29 ` [PATCH v4 3/4] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-04 8:39 ` sashiko-bot
2026-05-04 7:29 ` [PATCH v4 4/4] perf test: Add inject ASLR test Ian Rogers
2026-05-04 8:48 ` sashiko-bot
2026-05-04 8:23 ` [PATCH v4 0/4] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-06 0:45 ` [PATCH v5 0/5] " Ian Rogers
2026-05-06 0:45 ` [PATCH v5 1/5] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-06 13:22 ` Arnaldo Carvalho de Melo
2026-05-06 16:16 ` Ian Rogers
2026-05-06 0:45 ` [PATCH v5 2/5] perf tool: Fix missing schedstat delegates and dont_split_sample_group in delegate_tool Ian Rogers
2026-05-06 0:45 ` [PATCH v5 3/5] perf symbols: Fix map removal sequence inside dso__process_kernel_symbol() Ian Rogers
2026-05-06 1:45 ` sashiko-bot
2026-05-06 0:45 ` [PATCH v5 4/5] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-06 2:40 ` sashiko-bot
2026-05-06 18:52 ` Namhyung Kim
2026-05-06 20:01 ` Ian Rogers
2026-05-06 0:45 ` [PATCH v5 5/5] perf test: Add inject ASLR test Ian Rogers
2026-05-07 15:58 ` James Clark
2026-05-07 16:17 ` Ian Rogers
2026-05-08 10:42 ` James Clark
2026-05-08 10:49 ` James Clark
2026-05-08 8:27 ` [PATCH v6 0/6] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-08 8:27 ` [PATCH v6 1/6] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-08 8:27 ` [PATCH v6 2/6] perf tool: Missing delegate_tool schedstat delegates and dont_split_sample_group Ian Rogers
2026-05-08 8:27 ` [PATCH v6 3/6] perf maps: Add maps__mutate_mapping Ian Rogers
2026-05-08 10:57 ` James Clark
2026-05-08 20:37 ` sashiko-bot
2026-05-11 7:07 ` Namhyung Kim
2026-05-08 8:27 ` [PATCH v6 4/6] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-08 21:22 ` sashiko-bot
2026-05-11 7:32 ` Namhyung Kim
2026-05-08 8:27 ` [PATCH v6 5/6] perf test: Add inject ASLR test Ian Rogers
2026-05-08 13:29 ` James Clark
2026-05-08 14:29 ` James Clark
2026-05-11 7:34 ` Namhyung Kim [this message]
2026-05-08 8:27 ` [PATCH v6 6/6] perf aslr: Strip sample registers Ian Rogers
2026-05-08 21:49 ` sashiko-bot
2026-05-19 8:08 ` [PATCH v7 0/4] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-05-19 8:08 ` [PATCH v7 1/4] perf maps: Add maps__mutate_mapping Ian Rogers
2026-05-19 8:38 ` sashiko-bot
2026-05-19 8:08 ` [PATCH v7 2/4] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-19 9:14 ` sashiko-bot
2026-05-19 8:08 ` [PATCH v7 3/4] perf test: Add inject ASLR test Ian Rogers
2026-05-19 8:08 ` [PATCH v7 4/4] perf aslr: Strip sample registers Ian Rogers
2026-05-19 9:55 ` sashiko-bot
2026-05-20 6:30 ` [PATCH v8 0/4] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-05-20 6:30 ` [PATCH v8 1/4] perf maps: Add maps__mutate_mapping Ian Rogers
2026-05-20 7:06 ` sashiko-bot
2026-05-20 6:30 ` [PATCH v8 2/4] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-20 7:50 ` sashiko-bot
2026-05-23 14:44 ` kernel test robot
2026-05-20 6:30 ` [PATCH v8 3/4] perf test: Add inject ASLR test Ian Rogers
2026-05-20 8:02 ` sashiko-bot
2026-05-20 6:30 ` [PATCH v8 4/4] perf aslr: Strip sample registers Ian Rogers
2026-05-20 8:41 ` sashiko-bot
2026-06-04 17:28 ` [PATCH v9 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-04 17:28 ` [PATCH v9 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-04 17:46 ` sashiko-bot
2026-06-04 17:28 ` [PATCH v9 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-04 17:45 ` sashiko-bot
2026-06-04 17:28 ` [PATCH v9 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-04 17:45 ` sashiko-bot
2026-06-04 17:28 ` [PATCH v9 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-04 17:40 ` sashiko-bot
2026-06-04 17:28 ` [PATCH v9 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-04 17:45 ` sashiko-bot
2026-06-05 6:06 ` [PATCH v10 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 6:06 ` [PATCH v10 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 6:20 ` sashiko-bot
2026-06-05 6:06 ` [PATCH v10 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 6:06 ` [PATCH v10 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 6:30 ` sashiko-bot
2026-06-05 6:06 ` [PATCH v10 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 6:13 ` sashiko-bot
2026-06-05 6:06 ` [PATCH v10 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05 18:52 ` [PATCH v11 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 18:52 ` [PATCH v11 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 19:06 ` sashiko-bot
2026-06-05 18:52 ` [PATCH v11 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 19:07 ` sashiko-bot
2026-06-05 18:52 ` [PATCH v11 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 18:52 ` [PATCH v11 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 18:52 ` [PATCH v11 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05 19:24 ` [PATCH v12 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 19:24 ` [PATCH v12 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 19:24 ` [PATCH v12 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 19:38 ` sashiko-bot
2026-06-05 19:24 ` [PATCH v12 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 19:24 ` [PATCH v12 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 19:24 ` [PATCH v12 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05 19:48 ` [PATCH v13 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 19:48 ` [PATCH v13 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 19:48 ` [PATCH v13 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 20:06 ` sashiko-bot
2026-06-05 19:48 ` [PATCH v13 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 19:48 ` [PATCH v13 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 19:48 ` [PATCH v13 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05 20:04 ` sashiko-bot
2026-06-05 20:56 ` [PATCH v14 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 20:56 ` [PATCH v14 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 20:56 ` [PATCH v14 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 21:12 ` sashiko-bot
2026-06-05 20:56 ` [PATCH v14 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 23:17 ` sashiko-bot
2026-06-05 20:56 ` [PATCH v14 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 21:05 ` sashiko-bot
2026-06-05 20:56 ` [PATCH v14 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-06 7:21 ` [PATCH v15 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-06 7:21 ` [PATCH v15 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-06 7:21 ` [PATCH v15 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-06 7:38 ` sashiko-bot
2026-06-06 7:21 ` [PATCH v15 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-06 7:36 ` sashiko-bot
2026-06-06 7:21 ` [PATCH v15 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-06 7:31 ` sashiko-bot
2026-06-06 7:21 ` [PATCH v15 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-06 7:38 ` sashiko-bot
2026-06-06 15:14 ` [PATCH v16 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-06 15:14 ` [PATCH v16 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-06 15:14 ` [PATCH v16 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-06 15:31 ` sashiko-bot
2026-06-06 15:14 ` [PATCH v16 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-06 15:30 ` sashiko-bot
2026-06-06 15:14 ` [PATCH v16 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-06 15:14 ` [PATCH v16 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-06 15:33 ` sashiko-bot
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=agGGm-QVsBb_apge@z2 \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=gmx@google.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
/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.