aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/vdso.c
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
commitada47b5fe13d89735805b566185f4885f5a3f750 (patch)
tree644b88f8a71896307d71438e9b3af49126ffb22b /arch/s390/kernel/vdso.c
parent43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff)
parent3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff)
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'arch/s390/kernel/vdso.c')
-rw-r--r--arch/s390/kernel/vdso.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c
index adfb32aa6d59..6bc9c197aa91 100644
--- a/arch/s390/kernel/vdso.c
+++ b/arch/s390/kernel/vdso.c
@@ -23,6 +23,7 @@
23#include <linux/security.h> 23#include <linux/security.h>
24#include <linux/bootmem.h> 24#include <linux/bootmem.h>
25#include <linux/compat.h> 25#include <linux/compat.h>
26#include <asm/asm-offsets.h>
26#include <asm/pgtable.h> 27#include <asm/pgtable.h>
27#include <asm/system.h> 28#include <asm/system.h>
28#include <asm/processor.h> 29#include <asm/processor.h>
@@ -86,7 +87,8 @@ static void vdso_init_data(struct vdso_data *vd)
86 unsigned int facility_list; 87 unsigned int facility_list;
87 88
88 facility_list = stfl(); 89 facility_list = stfl();
89 vd->ectg_available = switch_amode && (facility_list & 1); 90 vd->ectg_available =
91 user_mode != HOME_SPACE_MODE && (facility_list & 1);
90} 92}
91 93
92#ifdef CONFIG_64BIT 94#ifdef CONFIG_64BIT
@@ -114,7 +116,7 @@ int vdso_alloc_per_cpu(int cpu, struct _lowcore *lowcore)
114 116
115 lowcore->vdso_per_cpu_data = __LC_PASTE; 117 lowcore->vdso_per_cpu_data = __LC_PASTE;
116 118
117 if (!switch_amode || !vdso_enabled) 119 if (user_mode == HOME_SPACE_MODE || !vdso_enabled)
118 return 0; 120 return 0;
119 121
120 segment_table = __get_free_pages(GFP_KERNEL, SEGMENT_ORDER); 122 segment_table = __get_free_pages(GFP_KERNEL, SEGMENT_ORDER);
@@ -160,7 +162,7 @@ void vdso_free_per_cpu(int cpu, struct _lowcore *lowcore)
160 unsigned long segment_table, page_table, page_frame; 162 unsigned long segment_table, page_table, page_frame;
161 u32 *psal, *aste; 163 u32 *psal, *aste;
162 164
163 if (!switch_amode || !vdso_enabled) 165 if (user_mode == HOME_SPACE_MODE || !vdso_enabled)
164 return; 166 return;
165 167
166 psal = (u32 *)(addr_t) lowcore->paste[4]; 168 psal = (u32 *)(addr_t) lowcore->paste[4];
@@ -184,7 +186,7 @@ static void __vdso_init_cr5(void *dummy)
184 186
185static void vdso_init_cr5(void) 187static void vdso_init_cr5(void)
186{ 188{
187 if (switch_amode && vdso_enabled) 189 if (user_mode != HOME_SPACE_MODE && vdso_enabled)
188 on_each_cpu(__vdso_init_cr5, NULL, 1); 190 on_each_cpu(__vdso_init_cr5, NULL, 1);
189} 191}
190#endif /* CONFIG_64BIT */ 192#endif /* CONFIG_64BIT */