cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

trace+probe_vfs_getname.sh (1406B)


      1#!/bin/sh
      2# Check open filename arg using perf trace + vfs_getname
      3
      4# Uses the 'perf test shell' library to add probe:vfs_getname to the system
      5# then use it with 'perf trace' using 'touch' to write to a temp file, then
      6# checks that that was captured by the vfs_getname was used by 'perf trace',
      7# that already handles "probe:vfs_getname" if present, and used in the
      8# "open" syscall "filename" argument beautifier.
      9
     10# SPDX-License-Identifier: GPL-2.0
     11# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017
     12
     13. $(dirname $0)/lib/probe.sh
     14
     15skip_if_no_perf_probe || exit 2
     16skip_if_no_perf_trace || exit 2
     17
     18. $(dirname $0)/lib/probe_vfs_getname.sh
     19
     20trace_open_vfs_getname() {
     21	evts=$(echo $(perf list syscalls:sys_enter_open* 2>/dev/null | egrep 'open(at)? ' | sed -r 's/.*sys_enter_([a-z]+) +\[.*$/\1/') | sed 's/ /,/')
     22	perf trace -e $evts touch $file 2>&1 | \
     23	egrep " +[0-9]+\.[0-9]+ +\( +[0-9]+\.[0-9]+ ms\): +touch\/[0-9]+ open(at)?\((dfd: +CWD, +)?filename: +${file}, +flags: CREAT\|NOCTTY\|NONBLOCK\|WRONLY, +mode: +IRUGO\|IWUGO\) += +[0-9]+$"
     24}
     25
     26
     27add_probe_vfs_getname || skip_if_no_debuginfo
     28err=$?
     29if [ $err -ne 0 ] ; then
     30	exit $err
     31fi
     32
     33file=$(mktemp /tmp/temporary_file.XXXXX)
     34
     35# Do not use whatever ~/.perfconfig file, it may change the output
     36# via trace.{show_timestamp,show_prefix,etc}
     37export PERF_CONFIG=/dev/null
     38
     39trace_open_vfs_getname
     40err=$?
     41rm -f ${file}
     42cleanup_probe_vfs_getname
     43exit $err