summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Dike <jdike@jdike.wstearns.org>2002-12-16 15:34:58 -0500
committerJeff Dike <jdike@jdike.wstearns.org>2002-12-16 15:34:58 -0500
commitefa04bfda767acb0948e0a2e02ecb6bf29a43ad5 (patch)
tree9ca53d0490818337d0f0831b0a52601e94817739
parent91ec8aa9f5416d3474a34af9b8f197a344d0d523 (diff)
parent0d371e5a4ab01a0cf6d3f255cfcf99fb8a683e6c (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/Kconfig1
-rw-r--r--arch/um/drivers/line.c1
-rw-r--r--arch/um/kernel/process_kern.c2
-rw-r--r--arch/um/kernel/ptrace.c3
-rw-r--r--arch/um/kernel/sys_call_table.c16
-rw-r--r--arch/um/kernel/syscall_kern.c6
-rw-r--r--arch/um/kernel/sysrq.c8
-rw-r--r--arch/um/sys-i386/Makefile32
-rw-r--r--arch/um/uml.lds.S1
-rw-r--r--include/asm-um/pgtable.h6
-rw-r--r--include/asm-um/uaccess.h2
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,
&current->thread.fault_addr,