Merge tag 'riscv-for-linus-6.1-mw2' of git://git.kernel.org/pub/scm/linux/kernel...
[platform/kernel/linux-rpi.git] / arch / riscv / kernel / vdso.c
index 692e7ae..123d052 100644 (file)
@@ -60,6 +60,11 @@ struct __vdso_info {
        struct vm_special_mapping *cm;
 };
 
+static struct __vdso_info vdso_info;
+#ifdef CONFIG_COMPAT
+static struct __vdso_info compat_vdso_info;
+#endif
+
 static int vdso_mremap(const struct vm_special_mapping *sm,
                       struct vm_area_struct *new_vma)
 {
@@ -115,15 +120,18 @@ int vdso_join_timens(struct task_struct *task, struct time_namespace *ns)
        struct mm_struct *mm = task->mm;
        struct vm_area_struct *vma;
        VMA_ITERATOR(vmi, mm, 0);
-       struct __vdso_info *vdso_info = mm->context.vdso_info;
 
        mmap_read_lock(mm);
 
        for_each_vma(vmi, vma) {
                unsigned long size = vma->vm_end - vma->vm_start;
 
-               if (vma_is_special_mapping(vma, vdso_info->dm))
+               if (vma_is_special_mapping(vma, vdso_info.dm))
                        zap_page_range(vma, vma->vm_start, size);
+#ifdef CONFIG_COMPAT
+               if (vma_is_special_mapping(vma, compat_vdso_info.dm))
+                       zap_page_range(vma, vma->vm_start, size);
+#endif
        }
 
        mmap_read_unlock(mm);
@@ -265,7 +273,6 @@ static int __setup_additional_pages(struct mm_struct *mm,
 
        vdso_base += VVAR_SIZE;
        mm->context.vdso = (void *)vdso_base;
-       mm->context.vdso_info = (void *)vdso_info;
 
        ret =
           _install_special_mapping(mm, vdso_base, vdso_text_len,