diff options
Diffstat (limited to 'arch/s390/kernel/vdso.c')
-rw-r--r-- | arch/s390/kernel/vdso.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c index 6b83870507d5..d73630b4fe1d 100644 --- a/arch/s390/kernel/vdso.c +++ b/arch/s390/kernel/vdso.c | |||
@@ -84,11 +84,7 @@ struct vdso_data *vdso_data = &vdso_data_store.data; | |||
84 | */ | 84 | */ |
85 | static void vdso_init_data(struct vdso_data *vd) | 85 | static void vdso_init_data(struct vdso_data *vd) |
86 | { | 86 | { |
87 | unsigned int facility_list; | 87 | vd->ectg_available = user_mode != HOME_SPACE_MODE && test_facility(31); |
88 | |||
89 | facility_list = stfl(); | ||
90 | vd->ectg_available = | ||
91 | user_mode != HOME_SPACE_MODE && (facility_list & 1); | ||
92 | } | 88 | } |
93 | 89 | ||
94 | #ifdef CONFIG_64BIT | 90 | #ifdef CONFIG_64BIT |
@@ -207,7 +203,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
207 | if (!uses_interp) | 203 | if (!uses_interp) |
208 | return 0; | 204 | return 0; |
209 | 205 | ||
210 | vdso_base = mm->mmap_base; | ||
211 | #ifdef CONFIG_64BIT | 206 | #ifdef CONFIG_64BIT |
212 | vdso_pagelist = vdso64_pagelist; | 207 | vdso_pagelist = vdso64_pagelist; |
213 | vdso_pages = vdso64_pages; | 208 | vdso_pages = vdso64_pages; |
@@ -237,8 +232,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
237 | * fail and end up putting it elsewhere. | 232 | * fail and end up putting it elsewhere. |
238 | */ | 233 | */ |
239 | down_write(&mm->mmap_sem); | 234 | down_write(&mm->mmap_sem); |
240 | vdso_base = get_unmapped_area(NULL, vdso_base, | 235 | vdso_base = get_unmapped_area(NULL, 0, vdso_pages << PAGE_SHIFT, 0, 0); |
241 | vdso_pages << PAGE_SHIFT, 0, 0); | ||
242 | if (IS_ERR_VALUE(vdso_base)) { | 236 | if (IS_ERR_VALUE(vdso_base)) { |
243 | rc = vdso_base; | 237 | rc = vdso_base; |
244 | goto out_up; | 238 | goto out_up; |
@@ -343,17 +337,17 @@ static int __init vdso_init(void) | |||
343 | } | 337 | } |
344 | arch_initcall(vdso_init); | 338 | arch_initcall(vdso_init); |
345 | 339 | ||
346 | int in_gate_area_no_task(unsigned long addr) | 340 | int in_gate_area_no_mm(unsigned long addr) |
347 | { | 341 | { |
348 | return 0; | 342 | return 0; |
349 | } | 343 | } |
350 | 344 | ||
351 | int in_gate_area(struct task_struct *task, unsigned long addr) | 345 | int in_gate_area(struct mm_struct *mm, unsigned long addr) |
352 | { | 346 | { |
353 | return 0; | 347 | return 0; |
354 | } | 348 | } |
355 | 349 | ||
356 | struct vm_area_struct *get_gate_vma(struct task_struct *tsk) | 350 | struct vm_area_struct *get_gate_vma(struct mm_struct *mm) |
357 | { | 351 | { |
358 | return NULL; | 352 | return NULL; |
359 | } | 353 | } |