We were doing the check for whether we need to watch utmp from a
thread cloned from that which will actually do the utmp watching.
As a result, the utmp file was always being watched, even if it
didn't need to be.

Move the check to the parent thread.

Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/948623

Signed-off-by: Serge Hallyn <serge.hal...@canonical.com>
---
 src/lxc/start.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/lxc/start.c b/src/lxc/start.c
index eb26be2..ec48a48 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -506,16 +506,12 @@ static int do_start(void *data)
        if (lxc_sync_barrier_parent(handler, LXC_SYNC_CONFIGURE))
                return -1;
 
-       if (must_drop_cap_sys_boot()) {
+       if (handler->conf->need_utmp_watch) {
                if (prctl(PR_CAPBSET_DROP, CAP_SYS_BOOT, 0, 0, 0)) {
                        SYSERROR("failed to remove CAP_SYS_BOOT capability");
                        return -1;
                }
-               handler->conf->need_utmp_watch = 1;
                DEBUG("Dropped cap_sys_boot\n");
-       } else {
-               DEBUG("Not dropping cap_sys_boot or watching utmp\n");
-               handler->conf->need_utmp_watch = 0;
        }
 
        /* Setup the container, ip, names, utsname, ... */
@@ -638,6 +634,14 @@ int __lxc_start(const char *name, struct lxc_conf *conf,
        handler->ops = ops;
        handler->data = data;
 
+       if (must_drop_cap_sys_boot()) {
+               handler->conf->need_utmp_watch = 1;
+               DEBUG("Dropping cap_sys_boot and watching utmp\n");
+       } else {
+               DEBUG("Not dropping cap_sys_boot or watching utmp\n");
+               handler->conf->need_utmp_watch = 0;
+       }
+
        err = lxc_spawn(handler);
        if (err) {
                ERROR("failed to spawn '%s'", name);
-- 
1.7.9.1


------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Lxc-users mailing list
Lxc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-users

Reply via email to