diff options
| author | Jeff Dike <jdike@jdike.wstearns.org> | 2002-12-16 15:34:58 -0500 |
|---|---|---|
| committer | Jeff Dike <jdike@jdike.wstearns.org> | 2002-12-16 15:34:58 -0500 |
| commit | efa04bfda767acb0948e0a2e02ecb6bf29a43ad5 (patch) | |
| tree | 9ca53d0490818337d0f0831b0a52601e94817739 | |
| parent | 91ec8aa9f5416d3474a34af9b8f197a344d0d523 (diff) | |
| parent | 0d371e5a4ab01a0cf6d3f255cfcf99fb8a683e6c (diff) | |
Merge jdike.wstearns.org:/home/jdike/linux/linus-2.5
into jdike.wstearns.org:/home/jdike/linux/updates-2.5
| -rw-r--r-- | arch/um/Kconfig | 1 | ||||
| -rw-r--r-- | arch/um/drivers/line.c | 1 | ||||
| -rw-r--r-- | arch/um/kernel/process_kern.c | 2 | ||||
| -rw-r--r-- | arch/um/kernel/ptrace.c | 3 | ||||
| -rw-r--r-- | arch/um/kernel/sys_call_table.c | 16 | ||||
| -rw-r--r-- | arch/um/kernel/syscall_kern.c | 6 | ||||
| -rw-r--r-- | arch/um/kernel/sysrq.c | 8 | ||||
| -rw-r--r-- | arch/um/sys-i386/Makefile | 32 | ||||
| -rw-r--r-- | arch/um/uml.lds.S | 1 | ||||
| -rw-r--r-- | include/asm-um/pgtable.h | 6 | ||||
| -rw-r--r-- | include/asm-um/uaccess.h | 2 |
11 files changed, 39 insertions, 39 deletions
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index f7e8005ebf38..761bb8627ffc 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -128,6 +128,7 @@ source "net/Kconfig" source "fs/Kconfig" +source "lib/Kconfig" menu "SCSI support" diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index 837c07f41669..e2afb4271c34 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c @@ -13,6 +13,7 @@ #include "line.h" #include "kern.h" #include "user_util.h" +#include "kern_util.h" #include "os.h" #define LINE_BUFSIZE 4096 diff --git a/arch/um/kernel/process_kern.c b/arch/um/kernel/process_kern.c index 1588e175b4db..0e247f1a20bf 100644 --- a/arch/um/kernel/process_kern.c +++ b/arch/um/kernel/process_kern.c @@ -190,7 +190,7 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) current->thread.request.u.thread.proc = fn; current->thread.request.u.thread.arg = arg; - p = do_fork(CLONE_VM | flags, 0, NULL, 0, NULL); + p = do_fork(CLONE_VM | flags, 0, NULL, 0, NULL, NULL); if(IS_ERR(p)) panic("do_fork failed in kernel_thread"); return(p->pid); } diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c index d6dacf475c33..8b5739a84ed3 100644 --- a/arch/um/kernel/ptrace.c +++ b/arch/um/kernel/ptrace.c @@ -33,8 +33,7 @@ int sys_ptrace(long request, long pid, long addr, long data) if (current->ptrace & PT_PTRACED) goto out; - ret = security_ptrace(current->parent, current); - if (ret) + if((ret = security_ptrace(current->parent, current))) goto out; /* set the ptrace bit in the process flags. */ diff --git a/arch/um/kernel/sys_call_table.c b/arch/um/kernel/sys_call_table.c index f76c35dc568b..7b5a703a24c7 100644 --- a/arch/um/kernel/sys_call_table.c +++ b/arch/um/kernel/sys_call_table.c @@ -8,6 +8,7 @@ #include "linux/version.h" #include "linux/sys.h" #include "linux/swap.h" +#include "linux/sysctl.h" #include "asm/signal.h" #include "sysdep/syscalls.h" #include "kern_util.h" @@ -125,10 +126,8 @@ extern syscall_handler_t sys_ni_syscall; extern syscall_handler_t sys_adjtimex; extern syscall_handler_t sys_mprotect; extern syscall_handler_t sys_sigprocmask; -extern syscall_handler_t sys_create_module; extern syscall_handler_t sys_init_module; extern syscall_handler_t sys_delete_module; -extern syscall_handler_t sys_get_kernel_syms; extern syscall_handler_t sys_quotactl; extern syscall_handler_t sys_getpgid; extern syscall_handler_t sys_fchdir; @@ -162,7 +161,6 @@ extern syscall_handler_t sys_mremap; extern syscall_handler_t sys_setresuid16; extern syscall_handler_t sys_getresuid16; extern syscall_handler_t sys_ni_syscall; -extern syscall_handler_t sys_query_module; extern syscall_handler_t sys_poll; extern syscall_handler_t sys_nfsservctl; extern syscall_handler_t sys_setresgid16; @@ -235,9 +233,10 @@ extern syscall_handler_t sys_epoll_create; extern syscall_handler_t sys_epoll_ctl; extern syscall_handler_t sys_epoll_wait; extern syscall_handler_t sys_remap_file_pages; +extern syscall_handler_t sys_set_tid_address; #if CONFIG_NFSD -#define NFSSERVCTL sys_nfsserctl +#define NFSSERVCTL sys_nfsservctl #else #define NFSSERVCTL sys_ni_syscall #endif @@ -246,7 +245,7 @@ extern syscall_handler_t um_mount; extern syscall_handler_t um_time; extern syscall_handler_t um_stime; -#define LAST_GENERIC_SYSCALL __NR_remap_file_pages +#define LAST_GENERIC_SYSCALL __NR_set_tid_address #if LAST_GENERIC_SYSCALL > LAST_ARCH_SYSCALL #define LAST_SYSCALL LAST_GENERIC_SYSCALL @@ -384,10 +383,10 @@ syscall_handler_t *sys_call_table[] = { [ __NR_adjtimex ] = sys_adjtimex, [ __NR_mprotect ] = sys_mprotect, [ __NR_sigprocmask ] = sys_sigprocmask, - [ __NR_create_module ] = sys_create_module, + [ __NR_create_module ] = sys_ni_syscall, [ __NR_init_module ] = sys_init_module, [ __NR_delete_module ] = sys_delete_module, - [ __NR_get_kernel_syms ] = sys_get_kernel_syms, + [ __NR_get_kernel_syms ] = sys_ni_syscall, [ __NR_quotactl ] = sys_quotactl, [ __NR_getpgid ] = sys_getpgid, [ __NR_fchdir ] = sys_fchdir, @@ -424,7 +423,7 @@ syscall_handler_t *sys_call_table[] = { [ __NR_setresuid ] = sys_setresuid16, [ __NR_getresuid ] = sys_getresuid16, [ __NR_vm86 ] = sys_ni_syscall, - [ __NR_query_module ] = sys_query_module, + [ __NR_query_module ] = sys_ni_syscall, [ __NR_poll ] = sys_poll, [ __NR_nfsservctl ] = NFSSERVCTL, [ __NR_setresgid ] = sys_setresgid16, @@ -489,6 +488,7 @@ syscall_handler_t *sys_call_table[] = { [ __NR_epoll_ctl ] = sys_epoll_ctl, [ __NR_epoll_wait ] = sys_epoll_wait, [ __NR_remap_file_pages ] = sys_remap_file_pages, + [ __NR_set_tid_address ] = sys_set_tid_address, ARCH_SYSCALLS [ LAST_SYSCALL + 1 ... NR_syscalls ] = diff --git a/arch/um/kernel/syscall_kern.c b/arch/um/kernel/syscall_kern.c index b15340a6b837..ab42524562b1 100644 --- a/arch/um/kernel/syscall_kern.c +++ b/arch/um/kernel/syscall_kern.c @@ -33,7 +33,7 @@ long sys_fork(void) struct task_struct *p; current->thread.forking = 1; - p = do_fork(SIGCHLD, 0, NULL, 0, NULL); + p = do_fork(SIGCHLD, 0, NULL, 0, NULL, NULL); current->thread.forking = 0; return(IS_ERR(p) ? PTR_ERR(p) : p->pid); } @@ -43,7 +43,7 @@ long sys_clone(unsigned long clone_flags, unsigned long newsp) struct task_struct *p; current->thread.forking = 1; - p = do_fork(clone_flags, newsp, NULL, 0, NULL); + p = do_fork(clone_flags, newsp, NULL, 0, NULL, NULL); current->thread.forking = 0; return(IS_ERR(p) ? PTR_ERR(p) : p->pid); } @@ -53,7 +53,7 @@ long sys_vfork(void) struct task_struct *p; current->thread.forking = 1; - p = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0, NULL, 0, NULL); + p = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0, NULL, 0, NULL, NULL); current->thread.forking = 0; return(IS_ERR(p) ? PTR_ERR(p) : p->pid); } diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c index 5a05d66a125f..2bf29ad7ad27 100644 --- a/arch/um/kernel/sysrq.c +++ b/arch/um/kernel/sysrq.c @@ -19,8 +19,8 @@ #ifdef CONFIG_MODULES -extern struct module *module_list; -extern struct module kernel_module; +/* FIXME: Accessed without a lock --RR */ +extern struct list_head modules; static inline int kernel_text_address(unsigned long addr) { @@ -31,11 +31,11 @@ static inline int kernel_text_address(unsigned long addr) addr <= (unsigned long) &_etext) return 1; - for (mod = module_list; mod != &kernel_module; mod = mod->next) { + list_for_each_entry(mod, &modules, list) { /* mod_bound tests for addr being inside the vmalloc'ed * module area. Of course it'd be better to test only * for the .text subset... */ - if (mod_bound(addr, 0, mod)) { + if (mod_bound((void *) addr, 0, mod)) { retval = 1; break; } diff --git a/arch/um/sys-i386/Makefile b/arch/um/sys-i386/Makefile index 19258ea6e695..bc0cbe6ba325 100644 --- a/arch/um/sys-i386/Makefile +++ b/arch/um/sys-i386/Makefile @@ -1,4 +1,4 @@ -obj-y = bugs.o checksum.o extable.o fault.o ksyms.o ldt.o \ +obj-y = bugs.o checksum.o extable.o fault.o ksyms.o ldt.o module.o \ ptrace.o ptrace_user.o semaphore.o sigcontext.o syscalls.o sysrq.o obj-$(CONFIG_HIGHMEM) += highmem.o @@ -6,28 +6,26 @@ obj-$(CONFIG_HIGHMEM) += highmem.o export-objs = ksyms.o USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o -USER_OBJS := $(foreach file,$(USER_OBJS),arch/um/sys-i386/$(file)) +USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) -SYMLINKS = semaphore.c checksum.S extable.c highmem.c +SYMLINKS = semaphore.c extable.c highmem.c module.c -$(USER_OBJS) : %.o: %.c - $(CC) $(CFLAGS_$@) $(USER_CFLAGS) -c -o $@ $< +semaphore.c-dir = kernel +extable.c-dir = mm +highmem.c-dir = mm +module.c-dir = kernel -arch/um/sys-i386/checksum.S: - -rm -f $@ - -ln -s $(TOPDIR)/arch/i386/lib/$(notdir $@) $@ +define make_link + -rm -f $1 + ln -sf $(TOPDIR)/arch/i386/$($(notdir $1)-dir)/$(notdir $1) $1 +endef -arch/um/sys-i386/semaphore.c: - -rm -f $@ - -ln -s $(TOPDIR)/arch/i386/kernel/$(notdir $@) $@ +$(USER_OBJS) : %.o: %.c + $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -arch/um/sys-i386/extable.c: - -rm -f $@ - -ln -s $(TOPDIR)/arch/i386/mm/$(notdir $@) $@ +$(foreach f,$(SYMLINKS),$(src)/$f): + $(call make_link,$@) -arch/um/sys-i386/highmem.c: - -rm -f $@ - -ln -s $(TOPDIR)/arch/i386/mm/$(notdir $@) $@ clean: $(MAKE) -C util clean diff --git a/arch/um/uml.lds.S b/arch/um/uml.lds.S index c15bc24842c3..cd4b487e0fa5 100644 --- a/arch/um/uml.lds.S +++ b/arch/um/uml.lds.S @@ -38,6 +38,7 @@ SECTIONS __ex_table : { *(__ex_table) } __stop___ex_table = .; + . = ALIGN(64); __start___ksymtab = .; /* Kernel symbol table */ __ksymtab : { *(__ksymtab) } __stop___ksymtab = .; diff --git a/include/asm-um/pgtable.h b/include/asm-um/pgtable.h index a79a756c3989..8d607c87418d 100644 --- a/include/asm-um/pgtable.h +++ b/include/asm-um/pgtable.h @@ -373,15 +373,15 @@ static inline pmd_t * pmd_offset(pgd_t * dir, unsigned long address) } /* Find an entry in the third-level page table.. */ -#define __pte_offset(address) ((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) +#define __pte_offset(address) (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) #define pte_offset_kernel(dir, address) \ ((pte_t *) pmd_page_kernel(*(dir)) + __pte_offset(address)) #define pte_offset_map(dir, address) \ ((pte_t *)kmap_atomic(pmd_page(*(dir)),KM_PTE0) + __pte_offset(address)) #define pte_offset_map_nested(dir, address) \ ((pte_t *)kmap_atomic(pmd_page(*(dir)),KM_PTE1) + __pte_offset(address)) -#define pte_unmap(pte) kunmap_atomic(pte, KM_PTE0) -#define pte_unmap_nested(pte) kunmap_atomic(pte, KM_PTE1) +#define pte_unmap(pte) kunmap_atomic((pte), KM_PTE0) +#define pte_unmap_nested(pte) kunmap_atomic((pte), KM_PTE1) #if defined(CONFIG_HIGHPTE) && defined(CONFIG_HIGHMEM4G) typedef u32 pte_addr_t; diff --git a/include/asm-um/uaccess.h b/include/asm-um/uaccess.h index a8a7dfb7e4c8..0a24a9b5497f 100644 --- a/include/asm-um/uaccess.h +++ b/include/asm-um/uaccess.h @@ -164,7 +164,7 @@ static inline int clear_user(void *mem, int len) extern int __do_strnlen_user(const char *str, unsigned long n, void **fault_addr, void **fault_catcher); -static inline int strnlen_user(void *str, int len) +static inline int strnlen_user(const void *str, int len) { return(__do_strnlen_user(str, len, ¤t->thread.fault_addr, |
