1. 18 Apr, 2013 2 commits
  2. 17 Apr, 2013 3 commits
  3. 16 Apr, 2013 9 commits
  4. 15 Apr, 2013 13 commits
  5. 12 Apr, 2013 3 commits
  6. 11 Apr, 2013 2 commits
    • Fix up struct lxc_container locking · 43d1aa34
      Serge Hallyn authored
      1. in container_free, set c->privlock to NULL before calling
      sem_destroy, to prevent a window where another thread could call
      sem_wait(c->privlock) while c->privlock is not NULL but is already
      destroyed.
      
      2. in container_get, check for numthreads < 0 before calling lxclock.
      Once numthreads is 0, it never goes back up.
      
      Following is a comment added to lxccontainer.c:
      
      /*
       * Consider the following case:
      freer                         |    racing get()er
      ==================================================================
      lxc_container_put()           |   lxc_container_get()
      \ lxclock(c->privlock)        |   c->numthreads < 1? (no)
      \ c->numthreads = 0           |   \ lxclock(c->privlock) -> waits
      \ lxcunlock()                 |   \
      \ lxc_container_free()        |   \ lxclock() returns
                                    |   \ c->numthreads < 1 -> return 0
      \ \ (free stuff)              |
      \ \ sem_destroy(privlock)     |
      
       * When the get()er checks numthreads the first time, one of the following
       * is true:
       * 1. freer has set numthreads = 0.  get() returns 0
       * 2. freer is between lxclock and setting numthreads to 0.  get()er will
       *    sem_wait on privlock, get lxclock after freer() drops it, then see
       *    numthreads is 0 and exit without touching lxclock again..
       * 3. freer has not yet locked privlock.  If get()er runs first, then put()er
       *    will see --numthreads = 1 and not call lxc_container_free().
      */
      Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
      Acked-by: 's avatarSeth Arnold <seth.arnold@canonical.com>
      Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
    • python: Fix memory management · e649c803
      Stéphane Graber authored
      Signed-off-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
  7. 10 Apr, 2013 7 commits
  8. 09 Apr, 2013 1 commit