1*4865ecf1SSerge E. Hallyn /* 2*4865ecf1SSerge E. Hallyn * Copyright (C) 2004 IBM Corporation 3*4865ecf1SSerge E. Hallyn * 4*4865ecf1SSerge E. Hallyn * Author: Serge Hallyn <serue@us.ibm.com> 5*4865ecf1SSerge E. Hallyn * 6*4865ecf1SSerge E. Hallyn * This program is free software; you can redistribute it and/or 7*4865ecf1SSerge E. Hallyn * modify it under the terms of the GNU General Public License as 8*4865ecf1SSerge E. Hallyn * published by the Free Software Foundation, version 2 of the 9*4865ecf1SSerge E. Hallyn * License. 10*4865ecf1SSerge E. Hallyn */ 11*4865ecf1SSerge E. Hallyn 12*4865ecf1SSerge E. Hallyn #include <linux/module.h> 13*4865ecf1SSerge E. Hallyn #include <linux/uts.h> 14*4865ecf1SSerge E. Hallyn #include <linux/utsname.h> 15*4865ecf1SSerge E. Hallyn #include <linux/version.h> 16*4865ecf1SSerge E. Hallyn 17*4865ecf1SSerge E. Hallyn /* 18*4865ecf1SSerge E. Hallyn * Copy task tsk's utsname namespace, or clone it if flags 19*4865ecf1SSerge E. Hallyn * specifies CLONE_NEWUTS. In latter case, changes to the 20*4865ecf1SSerge E. Hallyn * utsname of this process won't be seen by parent, and vice 21*4865ecf1SSerge E. Hallyn * versa. 22*4865ecf1SSerge E. Hallyn */ 23*4865ecf1SSerge E. Hallyn int copy_utsname(int flags, struct task_struct *tsk) 24*4865ecf1SSerge E. Hallyn { 25*4865ecf1SSerge E. Hallyn struct uts_namespace *old_ns = tsk->nsproxy->uts_ns; 26*4865ecf1SSerge E. Hallyn int err = 0; 27*4865ecf1SSerge E. Hallyn 28*4865ecf1SSerge E. Hallyn if (!old_ns) 29*4865ecf1SSerge E. Hallyn return 0; 30*4865ecf1SSerge E. Hallyn 31*4865ecf1SSerge E. Hallyn get_uts_ns(old_ns); 32*4865ecf1SSerge E. Hallyn 33*4865ecf1SSerge E. Hallyn return err; 34*4865ecf1SSerge E. Hallyn } 35*4865ecf1SSerge E. Hallyn 36*4865ecf1SSerge E. Hallyn void free_uts_ns(struct kref *kref) 37*4865ecf1SSerge E. Hallyn { 38*4865ecf1SSerge E. Hallyn struct uts_namespace *ns; 39*4865ecf1SSerge E. Hallyn 40*4865ecf1SSerge E. Hallyn ns = container_of(kref, struct uts_namespace, kref); 41*4865ecf1SSerge E. Hallyn kfree(ns); 42*4865ecf1SSerge E. Hallyn } 43