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 | } |
