@@ -60,6 +60,11 @@ struct __vdso_info {
6060 struct vm_special_mapping * cm ;
6161};
6262
63+ static struct __vdso_info vdso_info ;
64+ #ifdef CONFIG_COMPAT
65+ static struct __vdso_info compat_vdso_info ;
66+ #endif
67+
6368static int vdso_mremap (const struct vm_special_mapping * sm ,
6469 struct vm_area_struct * new_vma )
6570{
@@ -114,15 +119,18 @@ int vdso_join_timens(struct task_struct *task, struct time_namespace *ns)
114119{
115120 struct mm_struct * mm = task -> mm ;
116121 struct vm_area_struct * vma ;
117- struct __vdso_info * vdso_info = mm -> context .vdso_info ;
118122
119123 mmap_read_lock (mm );
120124
121125 for (vma = mm -> mmap ; vma ; vma = vma -> vm_next ) {
122126 unsigned long size = vma -> vm_end - vma -> vm_start ;
123127
124- if (vma_is_special_mapping (vma , vdso_info -> dm ))
128+ if (vma_is_special_mapping (vma , vdso_info . dm ))
125129 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
126134 }
127135
128136 mmap_read_unlock (mm );
@@ -264,7 +272,6 @@ static int __setup_additional_pages(struct mm_struct *mm,
264272
265273 vdso_base += VVAR_SIZE ;
266274 mm -> context .vdso = (void * )vdso_base ;
267- mm -> context .vdso_info = (void * )vdso_info ;
268275
269276 ret =
270277 _install_special_mapping (mm , vdso_base , vdso_text_len ,
0 commit comments