@@ -60,6 +60,11 @@ struct __vdso_info {
60
60
struct vm_special_mapping * cm ;
61
61
};
62
62
63
+ static struct __vdso_info vdso_info ;
64
+ #ifdef CONFIG_COMPAT
65
+ static struct __vdso_info compat_vdso_info ;
66
+ #endif
67
+
63
68
static int vdso_mremap (const struct vm_special_mapping * sm ,
64
69
struct vm_area_struct * new_vma )
65
70
{
@@ -114,15 +119,18 @@ int vdso_join_timens(struct task_struct *task, struct time_namespace *ns)
114
119
{
115
120
struct mm_struct * mm = task -> mm ;
116
121
struct vm_area_struct * vma ;
117
- struct __vdso_info * vdso_info = mm -> context .vdso_info ;
118
122
119
123
mmap_read_lock (mm );
120
124
121
125
for (vma = mm -> mmap ; vma ; vma = vma -> vm_next ) {
122
126
unsigned long size = vma -> vm_end - vma -> vm_start ;
123
127
124
- if (vma_is_special_mapping (vma , vdso_info -> dm ))
128
+ if (vma_is_special_mapping (vma , vdso_info . dm ))
125
129
zap_page_range (vma , vma -> vm_start , size );
130
+ #ifdef CONFIG_COMPAT
131
+ if (vma_is_special_mapping (vma , compat_vdso_info .dm ))
132
+ zap_page_range (vma , vma -> vm_start , size );
133
+ #endif
126
134
}
127
135
128
136
mmap_read_unlock (mm );
@@ -264,7 +272,6 @@ static int __setup_additional_pages(struct mm_struct *mm,
264
272
265
273
vdso_base += VVAR_SIZE ;
266
274
mm -> context .vdso = (void * )vdso_base ;
267
- mm -> context .vdso_info = (void * )vdso_info ;
268
275
269
276
ret =
270
277
_install_special_mapping (mm , vdso_base , vdso_text_len ,
0 commit comments