[PATCH] Allow UML kernel to run in a separate address space

From: Jeff Dike (jdike@karaya.com)
Date: Sat Dec 07 2002 - 13:43:11 EST


Please pull either
        http://jdike.stearns.org:5000/skas-2.5
or http://uml.bkbits.net/skas-2.5

This allows the UML kernel to run in a different address space from its
processes. The benefits include better security and much improved performance.
This is a large patch, but
        it's all under arch/um and include/asm-um
        a lot of it is code movement

This is described fairly completely in
        http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&safe=off&selm=fa.ia69pmv.e4qnq1%40ifi.uio.no

                                Jeff

 arch/um/Kconfig | 8
 arch/um/Makefile | 77 ++--
 arch/um/Makefile-i386 | 4
 arch/um/drivers/chan_kern.c | 66 +++
 arch/um/drivers/chan_user.c | 33 -
 arch/um/drivers/fd.c | 6
 arch/um/drivers/line.c | 108 +++++-
 arch/um/drivers/mconsole_kern.c | 62 +++
 arch/um/drivers/null.c | 5
 arch/um/drivers/port_kern.c | 13
 arch/um/drivers/port_user.c | 9
 arch/um/drivers/pty.c | 19 -
 arch/um/drivers/ssl.c | 36 +-
 arch/um/drivers/stdio_console.c | 32 +
 arch/um/drivers/tty.c | 8
 arch/um/drivers/ubd_kern.c | 39 ++
 arch/um/drivers/xterm.c | 4
 arch/um/include/chan_kern.h | 3
 arch/um/include/chan_user.h | 4
 arch/um/include/choose-mode.h | 35 ++
 arch/um/include/debug.h | 26 -
 arch/um/include/frame.h | 18 -
 arch/um/include/kern.h | 2
 arch/um/include/kern_util.h | 28 -
 arch/um/include/line.h | 11
 arch/um/include/mconsole_kern.h | 16
 arch/um/include/mem.h | 1
 arch/um/include/mem_user.h | 12
 arch/um/include/mode.h | 30 +
 arch/um/include/mode_kern.h | 30 +
 arch/um/include/os.h | 8
 arch/um/include/sigcontext.h | 2
 arch/um/include/syscall_user.h | 13
 arch/um/include/sysdep-i386/checksum.h | 217 ++++++++++++
 arch/um/include/sysdep-i386/frame_kern.h | 9
 arch/um/include/sysdep-i386/ptrace.h | 109 ++++--
 arch/um/include/sysdep-i386/sigcontext.h | 33 +
 arch/um/include/time_user.h | 2
 arch/um/include/um_mmu.h | 40 ++
 arch/um/include/um_uaccess.h | 73 ++++
 arch/um/include/user_util.h | 26 -
 arch/um/kernel/Makefile | 56 +--
 arch/um/kernel/checksum.c | 42 ++
 arch/um/kernel/exec_kern.c | 64 ---
 arch/um/kernel/exec_user.c | 49 --
 arch/um/kernel/frame.c | 204 ++++++-----
 arch/um/kernel/frame_kern.c | 85 +++-
 arch/um/kernel/helper.c | 5
 arch/um/kernel/init_task.c | 2
 arch/um/kernel/ksyms.c | 17
 arch/um/kernel/mem.c | 71 +---
 arch/um/kernel/mem_user.c | 44 --
 arch/um/kernel/process.c | 136 +++++--
 arch/um/kernel/process_kern.c | 477 +--------------------------
 arch/um/kernel/ptrace.c | 61 +++
 arch/um/kernel/reboot.c | 25 -
 arch/um/kernel/sigio_user.c | 13
 arch/um/kernel/signal_kern.c | 19 -
 arch/um/kernel/signal_user.c | 9
 arch/um/kernel/skas/Makefile | 26 +
 arch/um/kernel/skas/exec_kern.c | 41 ++
 arch/um/kernel/skas/exec_user.c | 61 +++
 arch/um/kernel/skas/include/mmu.h | 27 +
 arch/um/kernel/skas/include/mode.h | 34 +
 arch/um/kernel/skas/include/mode_kern.h | 52 +++
 arch/um/kernel/skas/include/proc_mm.h | 55 +++
 arch/um/kernel/skas/include/ptrace-skas.h | 57 +++
 arch/um/kernel/skas/include/skas.h | 49 ++
 arch/um/kernel/skas/include/skas_ptrace.h | 36 ++
 arch/um/kernel/skas/include/uaccess.h | 236 +++++++++++++
 arch/um/kernel/skas/mem.c | 35 ++
 arch/um/kernel/skas/mem_user.c | 95 +++++
 arch/um/kernel/skas/mmu.c | 46 ++
 arch/um/kernel/skas/process.c | 386 ++++++++++++++++++++++
 arch/um/kernel/skas/process_kern.c | 195 +++++++++++
 arch/um/kernel/skas/sys-i386/Makefile | 16
 arch/um/kernel/skas/sys-i386/sigcontext.c | 114 ++++++
 arch/um/kernel/skas/syscall_kern.c | 42 ++
 arch/um/kernel/skas/syscall_user.c | 47 ++
 arch/um/kernel/skas/time.c | 30 +
 arch/um/kernel/skas/tlb.c | 156 +++++++++
 arch/um/kernel/skas/trap_user.c | 66 +++
 arch/um/kernel/skas/util/Makefile | 10
 arch/um/kernel/skas/util/mk_ptregs.c | 50 ++
 arch/um/kernel/smp.c | 12
 arch/um/kernel/sys_call_table.c | 15
 arch/um/kernel/syscall_kern.c | 126 -------
 arch/um/kernel/syscall_user.c | 79 ----
 arch/um/kernel/sysrq.c | 8
 arch/um/kernel/time.c | 22 -
 arch/um/kernel/time_kern.c | 3
 arch/um/kernel/tlb.c | 225 +------------
 arch/um/kernel/trap_kern.c | 361 +++------------------
 arch/um/kernel/trap_user.c | 492 +---------------------------
 arch/um/kernel/tt/Makefile | 22 +
 arch/um/kernel/tt/exec_kern.c | 84 ++++
 arch/um/kernel/tt/exec_user.c | 49 ++
 arch/um/kernel/tt/gdb.c | 278 ++++++++++++++++
 arch/um/kernel/tt/gdb_kern.c | 40 ++
 arch/um/kernel/tt/include/debug.h | 29 +
 arch/um/kernel/tt/include/mmu.h | 23 +
 arch/um/kernel/tt/include/mode.h | 35 ++
 arch/um/kernel/tt/include/mode_kern.h | 53 +++
 arch/um/kernel/tt/include/ptrace-tt.h | 26 +
 arch/um/kernel/tt/include/tt.h | 45 ++
 arch/um/kernel/tt/include/uaccess.h | 119 ++++++
 arch/um/kernel/tt/ksyms.c | 28 +
 arch/um/kernel/tt/mem.c | 77 ++++
 arch/um/kernel/tt/process_kern.c | 513 ++++++++++++++++++++++++++++++
 arch/um/kernel/tt/ptproxy/Makefile | 15
 arch/um/kernel/tt/ptproxy/proxy.c | 370 +++++++++++++++++++++
 arch/um/kernel/tt/ptproxy/ptproxy.h | 61 +++
 arch/um/kernel/tt/ptproxy/ptrace.c | 239 +++++++++++++
 arch/um/kernel/tt/ptproxy/sysdep.c | 71 ++++
 arch/um/kernel/tt/ptproxy/sysdep.h | 25 +
 arch/um/kernel/tt/ptproxy/wait.c | 86 +++++
 arch/um/kernel/tt/ptproxy/wait.h | 15
 arch/um/kernel/tt/sys-i386/Makefile | 16
 arch/um/kernel/tt/sys-i386/sigcontext.c | 59 +++
 arch/um/kernel/tt/syscall_kern.c | 140 ++++++++
 arch/um/kernel/tt/syscall_user.c | 90 +++++
 arch/um/kernel/tt/time.c | 28 +
 arch/um/kernel/tt/tlb.c | 226 +++++++++++++
 arch/um/kernel/tt/tracer.c | 466 +++++++++++++++++++++++++++
 arch/um/kernel/tt/trap_user.c | 58 +++
 arch/um/kernel/tt/uaccess_user.c | 126 +++++++
 arch/um/kernel/uaccess_user.c | 126 -------
 arch/um/kernel/um_arch.c | 119 +++---
 arch/um/kernel/umid.c | 6
 arch/um/main.c | 64 ---
 arch/um/os-Linux/Makefile | 6
 arch/um/os-Linux/drivers/Makefile | 3
 arch/um/os-Linux/process.c | 42 ++
 arch/um/os-Linux/tty.c | 2
 arch/um/ptproxy/Makefile | 12
 arch/um/ptproxy/proxy.c | 370 ---------------------
 arch/um/ptproxy/ptproxy.h | 61 ---
 arch/um/ptproxy/ptrace.c | 238 -------------
 arch/um/ptproxy/sysdep.c | 71 ----
 arch/um/ptproxy/sysdep.h | 25 -
 arch/um/ptproxy/wait.c | 86 -----
 arch/um/ptproxy/wait.h | 15
 arch/um/sys-i386/Makefile | 36 --
 arch/um/sys-i386/checksum.S | 460 ++++++++++++++++++++++++++
 arch/um/sys-i386/ksyms.c | 3
 arch/um/sys-i386/ldt.c | 69 +++-
 arch/um/sys-i386/ptrace.c | 57 ++-
 arch/um/sys-i386/ptrace_user.c | 2
 arch/um/sys-i386/sigcontext.c | 39 --
 arch/um/sys-i386/util/mk_thread_kern.c | 16
 arch/um/sys-i386/util/mk_thread_user.c | 32 +
 arch/um/uml.lds.S | 1
 arch/um/util/Makefile | 11
 arch/um/util/mk_constants_kern.c | 24 +
 arch/um/util/mk_constants_user.c | 28 +
 include/asm-um/a.out.h | 8
 include/asm-um/checksum.h | 2
 include/asm-um/mmu.h | 18 -
 include/asm-um/mmu_context.h | 51 ++
 include/asm-um/page.h | 2
 include/asm-um/processor-generic.h | 39 +-
 include/asm-um/ptrace-generic.h | 2
 include/asm-um/uaccess.h | 100 -----
 163 files changed, 8130 insertions(+), 3589 deletions(-)

ChangeSet@1.930, 2002-12-06 21:30:55-05:00, jdike@uml.karaya.com
  Merge jdike.stearns.org:linux/skas-2.5
  into uml.karaya.com:/home/jdike/linux/2.5/skas-2.5

ChangeSet@1.929, 2002-12-06 21:25:54-05:00, jdike@uml.karaya.com
  Added a couple of includes as part of the 2.5.50 update.

ChangeSet@1.927.1.1, 2002-12-06 19:04:22-05:00, jdike@jdike.wstearns.org
  Merge jdike.wstearns.org:/home/jdike/linux/linus-2.5
  into jdike.wstearns.org:/home/jdike/linux/skas-2.5

ChangeSet@1.928, 2002-12-06 18:14:59-05:00, jdike@uml.karaya.com
  Merge uml.karaya.com:/home/jdike/linux/2.5/linus-2.5
  into uml.karaya.com:/home/jdike/linux/2.5/skas-2.5

ChangeSet@1.842.49.7, 2002-11-25 22:07:47-05:00, jdike@uml.karaya.com
  Fixed a stupid compile bug.

ChangeSet@1.842.49.6, 2002-11-25 21:03:24-05:00, jdike@uml.karaya.com
  Small fixes to sync up the 2.4 and 2.5 pools.
  Also fixed a stupid signal handling bug.

ChangeSet@1.842.49.5, 2002-11-25 13:41:02-05:00, jdike@uml.karaya.com
  A whole lot of small changes to sync up the 2.4 and 2.5 pools
  somewhat. Mostly whitespace changes, plus some code movement.
  Also added checksum.S to the repository, which I had somehow
  missed before.

ChangeSet@1.842.49.3, 2002-11-23 21:37:53-05:00, jdike@uml.karaya.com
  Merge

ChangeSet@1.842.49.2, 2002-11-23 19:25:48-05:00, jdike@uml.karaya.com
  Updated to 2.5.49, which involved fixing the calls to do_fork.

ChangeSet@1.842.7.14, 2002-11-23 16:49:59-05:00, jdike@uml.karaya.com
  Finished the skas merge by eliminating a syntax error, fixing the
  new compilation warnings, and fixing a call to handle_page_fault.

ChangeSet@1.842.7.13, 2002-11-22 21:47:15-05:00, jdike@uml.karaya.com
  Merged the rest of the skas changes.

ChangeSet@1.842.7.12, 2002-11-22 21:22:57-05:00, jdike@uml.karaya.com
  Fixed various build problems with the tlb.c merge.

ChangeSet@1.842.7.11, 2002-11-22 20:39:33-05:00, jdike@uml.karaya.com
  Merged the tlb.c changes from the skas patch.

ChangeSet@1.842.7.10, 2002-11-22 14:27:24-05:00, jdike@uml.karaya.com
  Minor build fixes to the last batch of skas merges.

ChangeSet@1.842.7.9, 2002-11-22 12:53:13-05:00, jdike@uml.karaya.com
  Merged a number of small skas changes.

ChangeSet@1.842.7.8, 2002-11-21 23:22:43-05:00, jdike@uml.karaya.com
  Some small build fixes to the IP checksum merge.

ChangeSet@1.842.6.4, 2002-11-21 23:21:41-05:00, jdike@uml.karaya.com
  Removed the checksum.S symlink from arch/um/sys-i386/Makefile.

ChangeSet@1.842.7.7, 2002-11-21 22:30:24-05:00, jdike@uml.karaya.com
  Merged the IP checksum changes from the skas code.

ChangeSet@1.842.7.6, 2002-11-21 22:26:06-05:00, jdike@uml.karaya.com
  Some minor build and compilation fixes to the copy_sc merge.

ChangeSet@1.842.7.5, 2002-11-21 22:00:31-05:00, jdike@uml.karaya.com
  Applied the sigcontext changes in the skas code.

ChangeSet@1.842.7.4, 2002-11-21 21:38:56-05:00, jdike@uml.karaya.com
  A number of small fixes for the uaccess merge.

ChangeSet@1.842.7.3, 2002-11-21 18:54:16-05:00, jdike@uml.karaya.com
  Added the uaccess changes from the skas merge.

ChangeSet@1.842.7.2, 2002-11-21 17:16:25-05:00, jdike@uml.karaya.com
  Resolved the conflict between the skas and get_config changes in
  line.h.

ChangeSet@1.842.14.17, 2002-11-21 14:59:43-05:00, jdike@uml.karaya.com
  Added skas/mem_user.c and tt/gdb.c

ChangeSet@1.842.14.16, 2002-11-21 14:48:11-05:00, jdike@uml.karaya.com
  Added a bunch of C files under arch/um/kernel/skas and
  arch/um/kernel/tt.

ChangeSet@1.842.14.15, 2002-11-21 14:31:45-05:00, jdike@uml.karaya.com
  Added a batch of files under arch/um/kernel/skas.

ChangeSet@1.842.14.14, 2002-11-21 14:09:26-05:00, jdike@uml.karaya.com
  Added arch/um/include/mode_kern.h

ChangeSet@1.842.6.3, 2002-11-21 14:05:13-05:00, jdike@uml.karaya.com
  Changed the config to pull in zlib.

ChangeSet@1.842.14.13, 2002-11-21 13:23:40-05:00, jdike@uml.karaya.com
  Added the mode mmu.h and mode.h headers.

ChangeSet@1.842.14.12, 2002-11-21 13:15:09-05:00, jdike@uml.karaya.com
  Added mode.h, mk_constants_kern.c, mk_constants_user.c, and um_mmu.h

ChangeSet@1.842.14.11, 2002-11-21 12:58:41-05:00, jdike@uml.karaya.com
  Added ptrace-skas.h and ptrace-tt.h.

ChangeSet@1.842.14.10, 2002-11-21 12:52:36-05:00, jdike@uml.karaya.com
  Added arch/um/kernel/skas/util/*, which I missed somehow.

ChangeSet@1.842.14.9, 2002-11-20 23:04:22-05:00, jdike@uml.karaya.com
  Merged most of the rest of the skas changes.

ChangeSet@1.842.14.8, 2002-11-19 14:54:08-05:00, jdike@uml.karaya.com
  Declared mode_tt in user_util.h.

ChangeSet@1.842.14.7, 2002-11-19 14:53:18-05:00, jdike@uml.karaya.com
  Merged the skas exec reorg.

ChangeSet@1.842.14.6, 2002-11-19 13:47:41-05:00, jdike@uml.karaya.com
  Fixed a couple of buglets in the signal frame merge.

ChangeSet@1.842.14.5, 2002-11-19 00:54:26-05:00, jdike@uml.karaya.com
  Merged the signal frame cleanups and fixes from 2.4.

ChangeSet@1.842.14.4, 2002-11-19 00:47:18-05:00, jdike@uml.karaya.com
  Fixes to the last merge.

ChangeSet@1.842.14.3, 2002-11-19 00:13:26-05:00, jdike@uml.karaya.com
  Merged the os_kill_process and the driver from_user changes from
  the 2.4 pool.
  Also merged some other cleanups.

ChangeSet@1.842.14.2, 2002-11-18 23:28:32-05:00, jdike@uml.karaya.com
  Fixed the Makefiles so that the ptproxy move from arch/um/ptproxy
  to arch/um/kernel/tt/ptproxy works.

ChangeSet@1.842.14.1, 2002-11-18 22:47:18-05:00, jdike@uml.karaya.com
  Moved the ptproxy code from arch/um/ptproxy to
  arch/um/kernel/tt/ptproxy.

ChangeSet@1.842.6.2, 2002-11-18 20:03:13-05:00, jdike@uml.karaya.com
  A few more fixes to get 2.4.48 to boot.

ChangeSet@1.842.7.1, 2002-11-18 15:57:40-05:00, jdike@uml.karaya.com
  Merged the get_config changes from 2.4.

ChangeSet@1.842.6.1, 2002-11-18 15:57:00-05:00, jdike@uml.karaya.com
  Updated to 2.5.48

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Dec 07 2002 - 22:00:30 EST