[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [OpenAFS-devel] Re: MEMORY credential cache interop between Heimdal and MIT?



>Again, I don't understand _why_ a kernel solution is preferable.  Why
>tart up the kernel with a bunch of junk code (which from my point of
>view is _precisely_ what the "magic groups" PAG implementation does)
>when the inheritance semantics of MAP_ANON mmap mappings are already
>exactly what you want?

A couple of reasons from my point of view.  None of them are exactly very
strong:

- I don't see how to do locking of the mmap()'d region in a reasonable
  manner.  My issue with Sys V semaphores is that they don't clean themselves
  up.  I could use a shared descriptor to coordinate access ... but that
  gets back to all of the other problems with shared descriptors.  I imagine
  you could come up with some scheme, but I think it would be a bit hinky
  and not cover all of the corner cases.

- There is from what I see not a wonderful way to share that memory location
  to decendant processes.  I guess putting the memory address in an environment
  variable is probably no worse that what is done today (I guess you'd
  have a KRB5CCNAME variable that looks like "MMAP:0x12345678").

- It seems like all of these schemes were originally designed for processes
  that were tightly coupled; they weren't designed to work across a login
  session.  They work, but they feel ... fragile, somehow.

I'm not saying the entire set of credentials has to be placed in the
kernel.  MacOS X has a reasonable scheme; the kernel provides a
mechanism that has the right inheritance semantics (Mach RPCs) and you
communicate with a userland process to get your credentials.

Anyway, Thor, you could easily prove me wrong and simply WRITE the mmap()
credential cache yourself.

--Ken