.. | .. |
---|
37 | 37 | struct frame_tail buftail; |
---|
38 | 38 | unsigned long err; |
---|
39 | 39 | |
---|
40 | | - if (!access_ok(VERIFY_READ, tail, sizeof(buftail))) |
---|
| 40 | + if (!access_ok(tail, sizeof(buftail))) |
---|
41 | 41 | return NULL; |
---|
42 | 42 | |
---|
43 | 43 | pagefault_disable(); |
---|
.. | .. |
---|
62 | 62 | void |
---|
63 | 63 | perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs) |
---|
64 | 64 | { |
---|
| 65 | + struct perf_guest_info_callbacks *guest_cbs = perf_get_guest_cbs(); |
---|
65 | 66 | struct frame_tail __user *tail; |
---|
66 | 67 | |
---|
67 | | - if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) { |
---|
| 68 | + if (guest_cbs && guest_cbs->is_in_guest()) { |
---|
68 | 69 | /* We don't support guest os callchain now */ |
---|
69 | 70 | return; |
---|
70 | 71 | } |
---|
.. | .. |
---|
98 | 99 | void |
---|
99 | 100 | perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs) |
---|
100 | 101 | { |
---|
| 102 | + struct perf_guest_info_callbacks *guest_cbs = perf_get_guest_cbs(); |
---|
101 | 103 | struct stackframe fr; |
---|
102 | 104 | |
---|
103 | | - if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) { |
---|
| 105 | + if (guest_cbs && guest_cbs->is_in_guest()) { |
---|
104 | 106 | /* We don't support guest os callchain now */ |
---|
105 | 107 | return; |
---|
106 | 108 | } |
---|
.. | .. |
---|
111 | 113 | |
---|
112 | 114 | unsigned long perf_instruction_pointer(struct pt_regs *regs) |
---|
113 | 115 | { |
---|
114 | | - if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) |
---|
115 | | - return perf_guest_cbs->get_guest_ip(); |
---|
| 116 | + struct perf_guest_info_callbacks *guest_cbs = perf_get_guest_cbs(); |
---|
| 117 | + |
---|
| 118 | + if (guest_cbs && guest_cbs->is_in_guest()) |
---|
| 119 | + return guest_cbs->get_guest_ip(); |
---|
116 | 120 | |
---|
117 | 121 | return instruction_pointer(regs); |
---|
118 | 122 | } |
---|
119 | 123 | |
---|
120 | 124 | unsigned long perf_misc_flags(struct pt_regs *regs) |
---|
121 | 125 | { |
---|
| 126 | + struct perf_guest_info_callbacks *guest_cbs = perf_get_guest_cbs(); |
---|
122 | 127 | int misc = 0; |
---|
123 | 128 | |
---|
124 | | - if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) { |
---|
125 | | - if (perf_guest_cbs->is_user_mode()) |
---|
| 129 | + if (guest_cbs && guest_cbs->is_in_guest()) { |
---|
| 130 | + if (guest_cbs->is_user_mode()) |
---|
126 | 131 | misc |= PERF_RECORD_MISC_GUEST_USER; |
---|
127 | 132 | else |
---|
128 | 133 | misc |= PERF_RECORD_MISC_GUEST_KERNEL; |
---|