1. 26 Oct, 2016 14 commits
    • Charlie Jacobsen's avatar
      PMFS isolation: full init operational (minus function pointers). · af74008b
      Charlie Jacobsen authored
      bdi init/destroy in place. Fixed some data store bugs.
      file system type function pointers not set up yet. Need to figure out
      strategy for handling them (during mount).
    • Charlie Jacobsen's avatar
      PMFS isolation: register/unregister filesystem working. · 9e842950
      Charlie Jacobsen authored
      Along with a few cache initializations in PMFS init.
      I haven't fixed up the function pointers yet. Coming soon.
      Next up: bdi init.
    • Charlie Jacobsen's avatar
      Fixes two locking bugs in 'data store'. · e1b0fa74
      Charlie Jacobsen authored
      I left out the node unlock during insert and delete. This didn't
      matter inside an LCD because locks are elided. But it does in
      Fixed in liblcd and kliblcd.
    • Charlie Jacobsen's avatar
      Starts glue for PMFS. · ce03d0a2
      Charlie Jacobsen authored
      Sets up vfs klcd, and most of the code in place in boot module
      for setting up pmfs and vfs.
      (Need to squash and merge some code from the mainline.)
    • Charlie Jacobsen's avatar
      Fixes security bug: LCD could modify host's struct. · 18fc3b79
      Charlie Jacobsen authored
      This is a trivial commit, but I want to get this fixed before
      it bites us in the future.
      The problem: the host kernel uses a struct to represent an
      installed kernel module. But this struct is literally embedded
      in the module's program bits. We're mapping the entire module
      inside the LCD. Thus, the LCD can do whatever it wants to the
      struct, and this could affect the host.
      Yes, all of the other parts of the module are technically exposed
      to the host. But it's important we isolate this struct because this
      is something the host will actually touch.
      The solution: I duplicate the page that contains the struct, so
      that the LCD has a separate copy of the struct.
      Open issues: we still need to come up with a solution for an LCD
      to pass its struct module as an argument, via rpc. I'm going to
      hack it for now with PMFS.
    • Charlie Jacobsen's avatar
      Pulls dispatch loop definitions into headers. · bd924ac1
      Charlie Jacobsen authored
      This is a simple commit that pulls some common dispatch
      loop infrastructure (struct defs, etc.) into
      Updated glue example, all working.
    • Sarah Spall's avatar
    • Charles Jacobsen's avatar
      Simple glue building. · 70e13017
      Charles Jacobsen authored
    • Charlie Jacobsen's avatar
      Starting glue. · 0d22a750
      Charlie Jacobsen authored
    • Charlie Jacobsen's avatar
      Improves/abstracts over trampoline glue code (for function pointers). · 65db6aff
      Charlie Jacobsen authored
      I've hidden the nasty bits of the trampoline code as
      much as I can for now behind some macros, defined
      in include/lcd-domains/trampoline.h and trampoline_link.h.
      I updated the glue code example. Everything is working.
      Hopefully this should make trampolines easier to write,
      generate, and eventually verify (the macros I wrote
      will "expand" to some kind of models when we verify).
    • Sarah Spall's avatar
    • Sarah Spall's avatar
      pointer is no longer treated as a type · 7b668427
      Sarah Spall authored
    • Sarah Spall's avatar
      code for generating container struct definitions. updated makefile to reflect... · 43e429fc
      Sarah Spall authored
      code for generating container struct definitions. updated makefile to reflect changes to code structure. fix compilation bugs. committing to switch branches
    • Charlie Jacobsen's avatar
      Adds full functioning example with glue code. · 424ac36d
      Charlie Jacobsen authored
      Example is in virt/lcd-domains/test-mods/glue-example. It consists
      of a fake minix and fake vfs. The original "unmodified" code is
      in minix/original/main.c, vfs/original/main.c, and include/vfs.h.
      The glue code (written by hand) is in minix/glue and vfs/glue. The
      IDL is in idl/.
      You can build the fake minix and vfs for isolation or as regular
      modules. To build for isolation, run `make menuconfig' and under
      Test Modules --> Example Exercising IDL and Glue.
      To run minix and vfs in isolation, install the "boot" module,
      lcd-test-mod-glue-example-boot.ko. (Its code is under isol-boot/main.c.)
      The example will print status messages to the kernel logs so you
      can see a trace of the interaction.
      A few hacks were necessary to fully exercise all of the code. For example,
      the fake vfs is the one that invokes new_file and rm_file, in the middle
      of its dispatch loop.
      The code for the trampolines in vfs/glue/vfs_caller.{c,lds} is probably
      the ugliest part. That required a little bit of trickery and low-level
  2. 25 Oct, 2016 26 commits