projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-3.13/drivers' of git://git.kernel.dk/linux-block
[platform/adaptation/renesas_rcar/renesas_kernel.git]
/
kernel
/
taskstats.c
diff --git
a/kernel/taskstats.c
b/kernel/taskstats.c
index
145bb4d
..
9f4618e
100644
(file)
--- a/
kernel/taskstats.c
+++ b/
kernel/taskstats.c
@@
-290,6
+290,7
@@
static int add_del_listener(pid_t pid, const struct cpumask *mask, int isadd)
struct listener_list *listeners;
struct listener *s, *tmp, *s2;
unsigned int cpu;
struct listener_list *listeners;
struct listener *s, *tmp, *s2;
unsigned int cpu;
+ int ret = 0;
if (!cpumask_subset(mask, cpu_possible_mask))
return -EINVAL;
if (!cpumask_subset(mask, cpu_possible_mask))
return -EINVAL;
@@
-304,9
+305,10
@@
static int add_del_listener(pid_t pid, const struct cpumask *mask, int isadd)
for_each_cpu(cpu, mask) {
s = kmalloc_node(sizeof(struct listener),
GFP_KERNEL, cpu_to_node(cpu));
for_each_cpu(cpu, mask) {
s = kmalloc_node(sizeof(struct listener),
GFP_KERNEL, cpu_to_node(cpu));
- if (!s)
+ if (!s) {
+ ret = -ENOMEM;
goto cleanup;
goto cleanup;
-
+ }
s->pid = pid;
s->valid = 1;
s->pid = pid;
s->valid = 1;
@@
-339,7
+341,7
@@
cleanup:
}
up_write(&listeners->sem);
}
}
up_write(&listeners->sem);
}
- return
0
;
+ return
ret
;
}
static int parse(struct nlattr *na, struct cpumask *mask)
}
static int parse(struct nlattr *na, struct cpumask *mask)
@@
-404,11
+406,15
@@
static struct taskstats *mk_reply(struct sk_buff *skb, int type, u32 pid)
if (!na)
goto err;
if (!na)
goto err;
- if (nla_put(skb, type, sizeof(pid), &pid) < 0)
+ if (nla_put(skb, type, sizeof(pid), &pid) < 0) {
+ nla_nest_cancel(skb, na);
goto err;
goto err;
+ }
ret = nla_reserve(skb, TASKSTATS_TYPE_STATS, sizeof(struct taskstats));
ret = nla_reserve(skb, TASKSTATS_TYPE_STATS, sizeof(struct taskstats));
- if (!ret)
+ if (!ret) {
+ nla_nest_cancel(skb, na);
goto err;
goto err;
+ }
nla_nest_end(skb, na);
return nla_data(ret);
nla_nest_end(skb, na);
return nla_data(ret);