Containerized syslog working properly
[safe/jmp/linux-2.6] / kernel / nsproxy.c
index 2ab6723..7ade5d2 100644 (file)
@@ -13,7 +13,9 @@
  *             Pavel Emelianov <xemul@openvz.org>
  */
 
+#include <linux/slab.h>
 #include <linux/module.h>
+#include <linux/syslog.h>
 #include <linux/nsproxy.h>
 #include <linux/init_task.h>
 #include <linux/mnt_namespace.h>
@@ -92,8 +94,17 @@ static struct nsproxy *create_new_namespaces(unsigned long flags,
                goto out_net;
        }
 
+       new_nsp->syslog_ns = copy_syslog_ns(flags, tsk->nsproxy->syslog_ns);
+       if (IS_ERR(new_nsp->syslog_ns)) {
+               err = PTR_ERR(new_nsp->syslog_ns);
+               goto out_syslog;
+       }
+
        return new_nsp;
 
+out_syslog:
+       if (new_nsp->net_ns)
+               put_net(new_nsp->net_ns);
 out_net:
        if (new_nsp->pid_ns)
                put_pid_ns(new_nsp->pid_ns);
@@ -162,6 +173,8 @@ out:
 
 void free_nsproxy(struct nsproxy *ns)
 {
+       if (ns->syslog_ns)
+               put_syslog_ns(ns->syslog_ns);
        if (ns->mnt_ns)
                put_mnt_ns(ns->mnt_ns);
        if (ns->uts_ns)