aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/exec_domain.c
diff options
context:
space:
mode:
authorSergey Vlasov <vsu@altlinux.ru>2006-03-24 06:18:38 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-24 10:33:30 -0500
commit6a4d11c2abc57ed7ca42041e5f68ae4f7f640a81 (patch)
tree93a839de19cf3f49bbbb3668f31c8a002c2f7f7f /kernel/exec_domain.c
parentb5a7c4f5835ae2805d00ca39709002cb03364143 (diff)
[PATCH] Fix module refcount leak in __set_personality()
If the change of personality does not lead to change of exec domain, __set_personality() returned without releasing the module reference acquired by lookup_exec_domain(). Signed-off-by: Sergey Vlasov <vsu@altlinux.ru> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/exec_domain.c')
-rw-r--r--kernel/exec_domain.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/exec_domain.c b/kernel/exec_domain.c
index 867d6dbeb574..c01cead2cfd6 100644
--- a/kernel/exec_domain.c
+++ b/kernel/exec_domain.c
@@ -140,6 +140,7 @@ __set_personality(u_long personality)
140 ep = lookup_exec_domain(personality); 140 ep = lookup_exec_domain(personality);
141 if (ep == current_thread_info()->exec_domain) { 141 if (ep == current_thread_info()->exec_domain) {
142 current->personality = personality; 142 current->personality = personality;
143 module_put(ep->module);
143 return 0; 144 return 0;
144 } 145 }
145 146