|
20 | 20 | #include <asm/vgtod.h> |
21 | 21 | #include <asm/proto.h> |
22 | 22 | #include <asm/vdso.h> |
23 | | -#include <asm/vvar.h> |
24 | 23 | #include <asm/tlb.h> |
25 | 24 | #include <asm/page.h> |
26 | 25 | #include <asm/desc.h> |
27 | 26 | #include <asm/cpufeature.h> |
28 | 27 | #include <clocksource/hyperv_timer.h> |
29 | 28 |
|
30 | | -#undef _ASM_X86_VVAR_H |
31 | | -#define EMIT_VVAR(name, offset) \ |
32 | | - const size_t name ## _offset = offset; |
33 | | -#include <asm/vvar.h> |
34 | | - |
35 | 29 | struct vdso_data *arch_get_vdso_data(void *vvar_page) |
36 | 30 | { |
37 | | - return (struct vdso_data *)(vvar_page + _vdso_data_offset); |
| 31 | + return (struct vdso_data *)vvar_page; |
38 | 32 | } |
39 | | -#undef EMIT_VVAR |
40 | 33 |
|
41 | | -DEFINE_VVAR(struct vdso_data, _vdso_data); |
| 34 | +static union vdso_data_store vdso_data_store __page_aligned_data; |
| 35 | +struct vdso_data *vdso_data = vdso_data_store.data; |
42 | 36 |
|
43 | 37 | unsigned int vclocks_used __read_mostly; |
44 | 38 |
|
@@ -153,7 +147,7 @@ static vm_fault_t vvar_fault(const struct vm_special_mapping *sm, |
153 | 147 | if (sym_offset == image->sym_vvar_page) { |
154 | 148 | struct page *timens_page = find_timens_vvar_page(vma); |
155 | 149 |
|
156 | | - pfn = __pa_symbol(&__vvar_page) >> PAGE_SHIFT; |
| 150 | + pfn = __pa_symbol(vdso_data) >> PAGE_SHIFT; |
157 | 151 |
|
158 | 152 | /* |
159 | 153 | * If a task belongs to a time namespace then a namespace |
@@ -200,7 +194,7 @@ static vm_fault_t vvar_fault(const struct vm_special_mapping *sm, |
200 | 194 | if (!timens_page) |
201 | 195 | return VM_FAULT_SIGBUS; |
202 | 196 |
|
203 | | - pfn = __pa_symbol(&__vvar_page) >> PAGE_SHIFT; |
| 197 | + pfn = __pa_symbol(vdso_data) >> PAGE_SHIFT; |
204 | 198 | return vmf_insert_pfn(vma, vmf->address, pfn); |
205 | 199 | } |
206 | 200 |
|
|
0 commit comments