|
@@ -5943,6 +5943,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size,
|
|
|
unsigned long sp;
|
|
|
unsigned int rem;
|
|
|
u64 dyn_size;
|
|
|
+ mm_segment_t fs;
|
|
|
|
|
|
/*
|
|
|
* We dump:
|
|
@@ -5960,7 +5961,10 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size,
|
|
|
|
|
|
/* Data. */
|
|
|
sp = perf_user_stack_pointer(regs);
|
|
|
+ fs = get_fs();
|
|
|
+ set_fs(USER_DS);
|
|
|
rem = __output_copy_user(handle, (void *) sp, dump_size);
|
|
|
+ set_fs(fs);
|
|
|
dyn_size = dump_size - rem;
|
|
|
|
|
|
perf_output_skip(handle, rem);
|