OSDN Git Service
(root)
/
tomoyo
/
tomoyo-test1.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
019ad4a
)
Fix UTS corruption during clone(CLONE_NEWUTS)
author
Alexey Dobriyan
<adobriyan@sw.ru>
Wed, 19 Sep 2007 05:46:27 +0000
(22:46 -0700)
committer
Linus Torvalds
<torvalds@woody.linux-foundation.org>
Wed, 19 Sep 2007 18:24:17 +0000
(11:24 -0700)
struct utsname is copied from master one without any exclusion.
Here is sample output from one proggie doing
sethostname("
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
");
sethostname("
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
");
and another
clone(,, CLONE_NEWUTS, ...)
uname()
hostname = '
aaaaaaaaaaaaaaaaaaaaaaaaabbbbb
'
hostname = '
bbbaaaaaaaaaaaaaaaaaaaaaaaaaaa
'
hostname = '
aaaaaaaabbbbbbbbbbbbbbbbbbbbbb
'
hostname = '
aaaaaaaaaaaaaaaaaaaaaaaaaabbbb
'
hostname = '
aaaaaaaaaaaaaaaaaaaaaaaaaaaabb
'
hostname = '
aaabbbbbbbbbbbbbbbbbbbbbbbbbbb
'
hostname = '
bbbbbbbbbbbbbbbbaaaaaaaaaaaaaa
'
Hostname is sometimes corrupted.
Yes, even _the_ simplest namespace activity had bug in it. :-(
Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>
Acked-by: Serge Hallyn <serue@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/utsname.c
patch
|
blob
|
history
diff --git
a/kernel/utsname.c
b/kernel/utsname.c
index
9d8180a
..
816d7b2
100644
(file)
--- a/
kernel/utsname.c
+++ b/
kernel/utsname.c
@@
-28,7
+28,9
@@
static struct uts_namespace *clone_uts_ns(struct uts_namespace *old_ns)
if (!ns)
return ERR_PTR(-ENOMEM);
+ down_read(&uts_sem);
memcpy(&ns->name, &old_ns->name, sizeof(ns->name));
+ up_read(&uts_sem);
kref_init(&ns->kref);
return ns;
}