diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /arch/s390/kernel/vdso.c | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (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.c | 10 |
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 | ||
185 | static void vdso_init_cr5(void) | 187 | static 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 */ |