hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/arch/sparc/kernel/perf_event.c
....@@ -1771,9 +1771,11 @@
17711771 perf_callchain_store(entry, pc);
17721772 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
17731773 if ((pc + 8UL) == (unsigned long) &return_to_handler) {
1774
- int index = current->curr_ret_stack;
1775
- if (current->ret_stack && index >= graph) {
1776
- pc = current->ret_stack[index - graph].ret;
1774
+ struct ftrace_ret_stack *ret_stack;
1775
+ ret_stack = ftrace_graph_get_ret_stack(current,
1776
+ graph);
1777
+ if (ret_stack) {
1778
+ pc = ret_stack->ret;
17771779 perf_callchain_store(entry, pc);
17781780 graph++;
17791781 }
....@@ -1853,15 +1855,11 @@
18531855 {
18541856 u64 saved_fault_address = current_thread_info()->fault_address;
18551857 u8 saved_fault_code = get_thread_fault_code();
1856
- mm_segment_t old_fs;
18571858
18581859 perf_callchain_store(entry, regs->tpc);
18591860
18601861 if (!current->mm)
18611862 return;
1862
-
1863
- old_fs = get_fs();
1864
- set_fs(USER_DS);
18651863
18661864 flushw_user();
18671865
....@@ -1874,7 +1872,6 @@
18741872
18751873 pagefault_enable();
18761874
1877
- set_fs(old_fs);
18781875 set_thread_fault_code(saved_fault_code);
18791876 current_thread_info()->fault_address = saved_fault_address;
18801877 }