diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-09-14 08:19:08 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-14 08:19:08 -0400 |
commit | 905ec87e93bc9e01b15c60035cd6a50c636cbaef (patch) | |
tree | 46fd7618d6511611ffc19eb0dd4d7bc6b90a41c2 /arch/um/kernel | |
parent | 1d6ae775d7a948c9575658eb41184fd2e506c0df (diff) | |
parent | 2f4ba45a75d6383b4a1201169a808ffea416ffa0 (diff) |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'arch/um/kernel')
-rw-r--r-- | arch/um/kernel/asm-offsets.c | 1 | ||||
-rw-r--r-- | arch/um/kernel/dyn.lds.S | 37 | ||||
-rw-r--r-- | arch/um/kernel/ksyms.c | 5 | ||||
-rw-r--r-- | arch/um/kernel/physmem.c | 35 | ||||
-rw-r--r-- | arch/um/kernel/skas/include/uaccess-skas.h | 14 | ||||
-rw-r--r-- | arch/um/kernel/trap_kern.c | 6 | ||||
-rw-r--r-- | arch/um/kernel/tt/include/uaccess-tt.h | 14 | ||||
-rw-r--r-- | arch/um/kernel/uml.lds.S | 14 |
8 files changed, 27 insertions, 99 deletions
diff --git a/arch/um/kernel/asm-offsets.c b/arch/um/kernel/asm-offsets.c new file mode 100644 index 000000000000..c13a64a288f6 --- /dev/null +++ b/arch/um/kernel/asm-offsets.c | |||
@@ -0,0 +1 @@ | |||
/* Dummy file to make kbuild happy - unused! */ | |||
diff --git a/arch/um/kernel/dyn.lds.S b/arch/um/kernel/dyn.lds.S index 3942a5f245de..2517ecb8bf27 100644 --- a/arch/um/kernel/dyn.lds.S +++ b/arch/um/kernel/dyn.lds.S | |||
@@ -146,37 +146,8 @@ SECTIONS | |||
146 | } | 146 | } |
147 | _end = .; | 147 | _end = .; |
148 | PROVIDE (end = .); | 148 | PROVIDE (end = .); |
149 | /* Stabs debugging sections. */ | 149 | |
150 | .stab 0 : { *(.stab) } | 150 | STABS_DEBUG |
151 | .stabstr 0 : { *(.stabstr) } | 151 | |
152 | .stab.excl 0 : { *(.stab.excl) } | 152 | DWARF_DEBUG |
153 | .stab.exclstr 0 : { *(.stab.exclstr) } | ||
154 | .stab.index 0 : { *(.stab.index) } | ||
155 | .stab.indexstr 0 : { *(.stab.indexstr) } | ||
156 | .comment 0 : { *(.comment) } | ||
157 | /* DWARF debug sections. | ||
158 | Symbols in the DWARF debugging sections are relative to the beginning | ||
159 | of the section so we begin them at 0. */ | ||
160 | /* DWARF 1 */ | ||
161 | .debug 0 : { *(.debug) } | ||
162 | .line 0 : { *(.line) } | ||
163 | /* GNU DWARF 1 extensions */ | ||
164 | .debug_srcinfo 0 : { *(.debug_srcinfo) } | ||
165 | .debug_sfnames 0 : { *(.debug_sfnames) } | ||
166 | /* DWARF 1.1 and DWARF 2 */ | ||
167 | .debug_aranges 0 : { *(.debug_aranges) } | ||
168 | .debug_pubnames 0 : { *(.debug_pubnames) } | ||
169 | /* DWARF 2 */ | ||
170 | .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } | ||
171 | .debug_abbrev 0 : { *(.debug_abbrev) } | ||
172 | .debug_line 0 : { *(.debug_line) } | ||
173 | .debug_frame 0 : { *(.debug_frame) } | ||
174 | .debug_str 0 : { *(.debug_str) } | ||
175 | .debug_loc 0 : { *(.debug_loc) } | ||
176 | .debug_macinfo 0 : { *(.debug_macinfo) } | ||
177 | /* SGI/MIPS DWARF 2 extensions */ | ||
178 | .debug_weaknames 0 : { *(.debug_weaknames) } | ||
179 | .debug_funcnames 0 : { *(.debug_funcnames) } | ||
180 | .debug_typenames 0 : { *(.debug_typenames) } | ||
181 | .debug_varnames 0 : { *(.debug_varnames) } | ||
182 | } | 153 | } |
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c index 32d3076dd220..a97a72e516aa 100644 --- a/arch/um/kernel/ksyms.c +++ b/arch/um/kernel/ksyms.c | |||
@@ -34,14 +34,9 @@ EXPORT_SYMBOL(host_task_size); | |||
34 | EXPORT_SYMBOL(arch_validate); | 34 | EXPORT_SYMBOL(arch_validate); |
35 | EXPORT_SYMBOL(get_kmem_end); | 35 | EXPORT_SYMBOL(get_kmem_end); |
36 | 36 | ||
37 | EXPORT_SYMBOL(page_to_phys); | ||
38 | EXPORT_SYMBOL(phys_to_page); | ||
39 | EXPORT_SYMBOL(high_physmem); | 37 | EXPORT_SYMBOL(high_physmem); |
40 | EXPORT_SYMBOL(empty_zero_page); | 38 | EXPORT_SYMBOL(empty_zero_page); |
41 | EXPORT_SYMBOL(um_virt_to_phys); | 39 | EXPORT_SYMBOL(um_virt_to_phys); |
42 | EXPORT_SYMBOL(__virt_to_page); | ||
43 | EXPORT_SYMBOL(to_phys); | ||
44 | EXPORT_SYMBOL(to_virt); | ||
45 | EXPORT_SYMBOL(mode_tt); | 40 | EXPORT_SYMBOL(mode_tt); |
46 | EXPORT_SYMBOL(handle_page_fault); | 41 | EXPORT_SYMBOL(handle_page_fault); |
47 | EXPORT_SYMBOL(find_iomem); | 42 | EXPORT_SYMBOL(find_iomem); |
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c index a24e3b7f4bf0..ea670fcc8af5 100644 --- a/arch/um/kernel/physmem.c +++ b/arch/um/kernel/physmem.c | |||
@@ -248,16 +248,6 @@ unsigned long high_physmem; | |||
248 | 248 | ||
249 | extern unsigned long physmem_size; | 249 | extern unsigned long physmem_size; |
250 | 250 | ||
251 | void *to_virt(unsigned long phys) | ||
252 | { | ||
253 | return((void *) uml_physmem + phys); | ||
254 | } | ||
255 | |||
256 | unsigned long to_phys(void *virt) | ||
257 | { | ||
258 | return(((unsigned long) virt) - uml_physmem); | ||
259 | } | ||
260 | |||
261 | int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) | 251 | int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) |
262 | { | 252 | { |
263 | struct page *p, *map; | 253 | struct page *p, *map; |
@@ -298,31 +288,6 @@ int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) | |||
298 | return(0); | 288 | return(0); |
299 | } | 289 | } |
300 | 290 | ||
301 | struct page *phys_to_page(const unsigned long phys) | ||
302 | { | ||
303 | return(&mem_map[phys >> PAGE_SHIFT]); | ||
304 | } | ||
305 | |||
306 | struct page *__virt_to_page(const unsigned long virt) | ||
307 | { | ||
308 | return(&mem_map[__pa(virt) >> PAGE_SHIFT]); | ||
309 | } | ||
310 | |||
311 | phys_t page_to_phys(struct page *page) | ||
312 | { | ||
313 | return((page - mem_map) << PAGE_SHIFT); | ||
314 | } | ||
315 | |||
316 | pte_t mk_pte(struct page *page, pgprot_t pgprot) | ||
317 | { | ||
318 | pte_t pte; | ||
319 | |||
320 | pte_set_val(pte, page_to_phys(page), pgprot); | ||
321 | if(pte_present(pte)) | ||
322 | pte_mknewprot(pte_mknewpage(pte)); | ||
323 | return(pte); | ||
324 | } | ||
325 | |||
326 | /* Changed during early boot */ | 291 | /* Changed during early boot */ |
327 | static unsigned long kmem_top = 0; | 292 | static unsigned long kmem_top = 0; |
328 | 293 | ||
diff --git a/arch/um/kernel/skas/include/uaccess-skas.h b/arch/um/kernel/skas/include/uaccess-skas.h index cd6c280482cb..6ee3f3902e68 100644 --- a/arch/um/kernel/skas/include/uaccess-skas.h +++ b/arch/um/kernel/skas/include/uaccess-skas.h | |||
@@ -18,18 +18,18 @@ | |||
18 | ((unsigned long) (addr) + (size) <= FIXADDR_USER_END) && \ | 18 | ((unsigned long) (addr) + (size) <= FIXADDR_USER_END) && \ |
19 | ((unsigned long) (addr) + (size) >= (unsigned long)(addr)))) | 19 | ((unsigned long) (addr) + (size) >= (unsigned long)(addr)))) |
20 | 20 | ||
21 | static inline int verify_area_skas(int type, const void * addr, | 21 | static inline int verify_area_skas(int type, const void __user * addr, |
22 | unsigned long size) | 22 | unsigned long size) |
23 | { | 23 | { |
24 | return(access_ok_skas(type, addr, size) ? 0 : -EFAULT); | 24 | return(access_ok_skas(type, addr, size) ? 0 : -EFAULT); |
25 | } | 25 | } |
26 | 26 | ||
27 | extern int copy_from_user_skas(void *to, const void *from, int n); | 27 | extern int copy_from_user_skas(void *to, const void __user *from, int n); |
28 | extern int copy_to_user_skas(void *to, const void *from, int n); | 28 | extern int copy_to_user_skas(void __user *to, const void *from, int n); |
29 | extern int strncpy_from_user_skas(char *dst, const char *src, int count); | 29 | extern int strncpy_from_user_skas(char *dst, const char __user *src, int count); |
30 | extern int __clear_user_skas(void *mem, int len); | 30 | extern int __clear_user_skas(void __user *mem, int len); |
31 | extern int clear_user_skas(void *mem, int len); | 31 | extern int clear_user_skas(void __user *mem, int len); |
32 | extern int strnlen_user_skas(const void *str, int len); | 32 | extern int strnlen_user_skas(const void __user *str, int len); |
33 | 33 | ||
34 | #endif | 34 | #endif |
35 | 35 | ||
diff --git a/arch/um/kernel/trap_kern.c b/arch/um/kernel/trap_kern.c index b5fc89fe9eab..87cc6fd76ced 100644 --- a/arch/um/kernel/trap_kern.c +++ b/arch/um/kernel/trap_kern.c | |||
@@ -57,7 +57,8 @@ good_area: | |||
57 | if(is_write && !(vma->vm_flags & VM_WRITE)) | 57 | if(is_write && !(vma->vm_flags & VM_WRITE)) |
58 | goto out; | 58 | goto out; |
59 | 59 | ||
60 | if(!(vma->vm_flags & (VM_READ | VM_EXEC))) | 60 | /* Don't require VM_READ|VM_EXEC for write faults! */ |
61 | if(!is_write && !(vma->vm_flags & (VM_READ | VM_EXEC))) | ||
61 | goto out; | 62 | goto out; |
62 | 63 | ||
63 | do { | 64 | do { |
@@ -84,8 +85,7 @@ survive: | |||
84 | pte = pte_offset_kernel(pmd, address); | 85 | pte = pte_offset_kernel(pmd, address); |
85 | } while(!pte_present(*pte)); | 86 | } while(!pte_present(*pte)); |
86 | err = 0; | 87 | err = 0; |
87 | *pte = pte_mkyoung(*pte); | 88 | WARN_ON(!pte_young(*pte) || (is_write && !pte_dirty(*pte))); |
88 | if(pte_write(*pte)) *pte = pte_mkdirty(*pte); | ||
89 | flush_tlb_page(vma, address); | 89 | flush_tlb_page(vma, address); |
90 | out: | 90 | out: |
91 | up_read(&mm->mmap_sem); | 91 | up_read(&mm->mmap_sem); |
diff --git a/arch/um/kernel/tt/include/uaccess-tt.h b/arch/um/kernel/tt/include/uaccess-tt.h index 3fbb5fe26f49..aa6db384af80 100644 --- a/arch/um/kernel/tt/include/uaccess-tt.h +++ b/arch/um/kernel/tt/include/uaccess-tt.h | |||
@@ -33,7 +33,7 @@ extern unsigned long uml_physmem; | |||
33 | (((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) && \ | 33 | (((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) && \ |
34 | (under_task_size(addr, size) || is_stack(addr, size)))) | 34 | (under_task_size(addr, size) || is_stack(addr, size)))) |
35 | 35 | ||
36 | static inline int verify_area_tt(int type, const void * addr, | 36 | static inline int verify_area_tt(int type, const void __user * addr, |
37 | unsigned long size) | 37 | unsigned long size) |
38 | { | 38 | { |
39 | return(access_ok_tt(type, addr, size) ? 0 : -EFAULT); | 39 | return(access_ok_tt(type, addr, size) ? 0 : -EFAULT); |
@@ -50,12 +50,12 @@ extern int __do_clear_user(void *mem, size_t len, void **fault_addr, | |||
50 | extern int __do_strnlen_user(const char *str, unsigned long n, | 50 | extern int __do_strnlen_user(const char *str, unsigned long n, |
51 | void **fault_addr, void **fault_catcher); | 51 | void **fault_addr, void **fault_catcher); |
52 | 52 | ||
53 | extern int copy_from_user_tt(void *to, const void *from, int n); | 53 | extern int copy_from_user_tt(void *to, const void __user *from, int n); |
54 | extern int copy_to_user_tt(void *to, const void *from, int n); | 54 | extern int copy_to_user_tt(void __user *to, const void *from, int n); |
55 | extern int strncpy_from_user_tt(char *dst, const char *src, int count); | 55 | extern int strncpy_from_user_tt(char *dst, const char __user *src, int count); |
56 | extern int __clear_user_tt(void *mem, int len); | 56 | extern int __clear_user_tt(void __user *mem, int len); |
57 | extern int clear_user_tt(void *mem, int len); | 57 | extern int clear_user_tt(void __user *mem, int len); |
58 | extern int strnlen_user_tt(const void *str, int len); | 58 | extern int strnlen_user_tt(const void __user *str, int len); |
59 | 59 | ||
60 | #endif | 60 | #endif |
61 | 61 | ||
diff --git a/arch/um/kernel/uml.lds.S b/arch/um/kernel/uml.lds.S index b03326d391c9..af11915ce0a8 100644 --- a/arch/um/kernel/uml.lds.S +++ b/arch/um/kernel/uml.lds.S | |||
@@ -93,14 +93,10 @@ SECTIONS | |||
93 | *(.bss) | 93 | *(.bss) |
94 | *(COMMON) | 94 | *(COMMON) |
95 | } | 95 | } |
96 | _end = . ; | 96 | _end = .; |
97 | PROVIDE (end = .); | 97 | PROVIDE (end = .); |
98 | /* Stabs debugging sections. */ | 98 | |
99 | .stab 0 : { *(.stab) } | 99 | STABS_DEBUG |
100 | .stabstr 0 : { *(.stabstr) } | 100 | |
101 | .stab.excl 0 : { *(.stab.excl) } | 101 | DWARF_DEBUG |
102 | .stab.exclstr 0 : { *(.stab.exclstr) } | ||
103 | .stab.index 0 : { *(.stab.index) } | ||
104 | .stab.indexstr 0 : { *(.stab.indexstr) } | ||
105 | .comment 0 : { *(.comment) } | ||
106 | } | 102 | } |