aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/kernel/vdso.c')
-rw-r--r--arch/arm64/kernel/vdso.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
index 97bc68f4c689..3b8acfae7797 100644
--- a/arch/arm64/kernel/vdso.c
+++ b/arch/arm64/kernel/vdso.c
@@ -55,7 +55,7 @@ struct vdso_data *vdso_data = &vdso_data_store.data;
55 */ 55 */
56static struct page *vectors_page[1]; 56static struct page *vectors_page[1];
57 57
58static int alloc_vectors_page(void) 58static int __init alloc_vectors_page(void)
59{ 59{
60 extern char __kuser_helper_start[], __kuser_helper_end[]; 60 extern char __kuser_helper_start[], __kuser_helper_end[];
61 extern char __aarch32_sigret_code_start[], __aarch32_sigret_code_end[]; 61 extern char __aarch32_sigret_code_start[], __aarch32_sigret_code_end[];
@@ -88,7 +88,7 @@ int aarch32_setup_vectors_page(struct linux_binprm *bprm, int uses_interp)
88{ 88{
89 struct mm_struct *mm = current->mm; 89 struct mm_struct *mm = current->mm;
90 unsigned long addr = AARCH32_VECTORS_BASE; 90 unsigned long addr = AARCH32_VECTORS_BASE;
91 static struct vm_special_mapping spec = { 91 static const struct vm_special_mapping spec = {
92 .name = "[vectors]", 92 .name = "[vectors]",
93 .pages = vectors_page, 93 .pages = vectors_page,
94 94
@@ -212,10 +212,16 @@ void update_vsyscall(struct timekeeper *tk)
212 vdso_data->wtm_clock_nsec = tk->wall_to_monotonic.tv_nsec; 212 vdso_data->wtm_clock_nsec = tk->wall_to_monotonic.tv_nsec;
213 213
214 if (!use_syscall) { 214 if (!use_syscall) {
215 /* tkr_mono.cycle_last == tkr_raw.cycle_last */
215 vdso_data->cs_cycle_last = tk->tkr_mono.cycle_last; 216 vdso_data->cs_cycle_last = tk->tkr_mono.cycle_last;
217 vdso_data->raw_time_sec = tk->raw_time.tv_sec;
218 vdso_data->raw_time_nsec = tk->raw_time.tv_nsec;
216 vdso_data->xtime_clock_sec = tk->xtime_sec; 219 vdso_data->xtime_clock_sec = tk->xtime_sec;
217 vdso_data->xtime_clock_nsec = tk->tkr_mono.xtime_nsec; 220 vdso_data->xtime_clock_nsec = tk->tkr_mono.xtime_nsec;
218 vdso_data->cs_mult = tk->tkr_mono.mult; 221 /* tkr_raw.xtime_nsec == 0 */
222 vdso_data->cs_mono_mult = tk->tkr_mono.mult;
223 vdso_data->cs_raw_mult = tk->tkr_raw.mult;
224 /* tkr_mono.shift == tkr_raw.shift */
219 vdso_data->cs_shift = tk->tkr_mono.shift; 225 vdso_data->cs_shift = tk->tkr_mono.shift;
220 } 226 }
221 227