aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorJesper Juhl <jj@chaosbits.net>2012-10-04 20:16:52 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-05 14:05:31 -0400
commit0324b5a450f8a58304e93c5d886add24ca3527bc (patch)
treef3e77339d9964f550485e9d9b40897ba1b95b33f /kernel
parent322c9ec009fdc2bc9ccb8f55afab3f7ab8ac71ab (diff)
taskstats: cgroupstats_user_cmd() may leak on error
If prepare_reply() succeeds we have allocated memory for 'rep_skb'. If nla_reserve() then subsequently fails and returns NULL we fail to release the memory we allocated, thus causing a leak. Signed-off-by: Jesper Juhl <jj@chaosbits.net> Cc: Balbir Singh <bsingharora@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/taskstats.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/taskstats.c b/kernel/taskstats.c
index 610f0838d555..145bb4d3bd4d 100644
--- a/kernel/taskstats.c
+++ b/kernel/taskstats.c
@@ -445,6 +445,7 @@ static int cgroupstats_user_cmd(struct sk_buff *skb, struct genl_info *info)
445 na = nla_reserve(rep_skb, CGROUPSTATS_TYPE_CGROUP_STATS, 445 na = nla_reserve(rep_skb, CGROUPSTATS_TYPE_CGROUP_STATS,
446 sizeof(struct cgroupstats)); 446 sizeof(struct cgroupstats));
447 if (na == NULL) { 447 if (na == NULL) {
448 nlmsg_free(rep_skb);
448 rc = -EMSGSIZE; 449 rc = -EMSGSIZE;
449 goto err; 450 goto err;
450 } 451 }