84 lines
3.7 KiB
Bash
Executable File
84 lines
3.7 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
###########################################################################
|
|
## ##
|
|
## Copyright (c) 2015, Red Hat Inc. ##
|
|
## ##
|
|
## This program is free software: you can redistribute it and/or modify ##
|
|
## it under the terms of the GNU General Public License as published by ##
|
|
## the Free Software Foundation, either version 3 of the License, or ##
|
|
## (at your option) any later version. ##
|
|
## ##
|
|
## This program is distributed in the hope that it will be useful, ##
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of ##
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ##
|
|
## GNU General Public License for more details. ##
|
|
## ##
|
|
## You should have received a copy of the GNU General Public License ##
|
|
## along with this program. If not, see <http://www.gnu.org/licenses/>. ##
|
|
## ##
|
|
## Author: Li Wang <liwang@redhat.com> ##
|
|
## ##
|
|
###########################################################################
|
|
## ##
|
|
## Summary: panic while using userstacktrace ##
|
|
## ##
|
|
## BUG: unable to handle kernel paging request at 00000000417683c0 ##
|
|
## IP: [<ffffffff8105c834>] update_curr+0x124/0x1e0 ##
|
|
## PGD 41a796067 PUD 0 ##
|
|
## Thread overran stack, or stack corrupted ##
|
|
## Oops: 0000 [#1] SMP ##
|
|
## last sysfs file: ../system/cpu/cpu15/cache/index2/shared_cpu_map ##
|
|
## ##
|
|
## The bug was fixed by: ##
|
|
## 1dbd195 (tracing: Fix preempt count leak) ##
|
|
## ##
|
|
###########################################################################
|
|
|
|
export TCID="ftrace_regression01"
|
|
export TST_TOTAL=1
|
|
|
|
. ftrace_lib.sh
|
|
|
|
LOOP=10
|
|
|
|
TSTACK_TRACE_PATH="/proc/sys/kernel/stack_tracer_enabled"
|
|
EXC_PAGE_FAULT_ENABLE="$TRACING_PATH/events/exceptions/page_fault_kernel/enable"
|
|
MM_PAGE_FAULT_ENABLE="$TRACING_PATH/events/kmem/mm_kernel_pagefault/enable"
|
|
|
|
ftrace_userstacktrace_test()
|
|
{
|
|
if [ ! -e "$TSTACK_TRACE_PATH" ]; then
|
|
tst_brkm TCONF "Stack Tracer is not cofigured in This kernel"
|
|
fi
|
|
|
|
for i in $(seq $LOOP); do
|
|
echo 1 > $TSTACK_TRACE_PATH
|
|
echo userstacktrace > $TRACING_PATH/trace_options
|
|
grep -q "^userstacktrace" $TRACING_PATH/trace_options
|
|
if [ $? -ne 0 ]; then
|
|
tst_brkm TBROK "Failed to set userstacktrace"
|
|
fi
|
|
|
|
if [ -f "$EXC_PAGE_FAULT_ENABLE" ]; then
|
|
exc_page_fault_enable=`cat $EXC_PAGE_FAULT_ENABLE`
|
|
echo 1 > $EXC_PAGE_FAULT_ENABLE
|
|
else
|
|
mm_page_fault_enable=`cat $MM_PAGE_FAULT_ENABLE`
|
|
echo 1 > $MM_PAGE_FAULT_ENABLE
|
|
fi
|
|
done
|
|
|
|
if [ -f "$EXC_PAGE_FAULT_ENABLE" ]; then
|
|
echo "$exc_page_fault_enable" > $EXC_PAGE_FAULT_ENABLE
|
|
else
|
|
echo "$mm_page_fault_enable" > $MM_PAGE_FAULT_ENABLE
|
|
fi
|
|
|
|
tst_resm TPASS "Finished running the test"
|
|
}
|
|
|
|
ftrace_userstacktrace_test
|
|
|
|
tst_exit
|