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