diff options
author | Scott Wood <scottwood@freescale.com> | 2014-04-07 23:49:35 (GMT) |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-04-07 23:49:35 (GMT) |
commit | 62b8c978ee6b8d135d9e7953221de58000dba986 (patch) | |
tree | 683b04b2e627f6710c22c151b23c8cc9a165315e /kernel/taskstats.c | |
parent | 78fd82238d0e5716578c326404184a27ba67fd6e (diff) | |
download | linux-fsl-qoriq-62b8c978ee6b8d135d9e7953221de58000dba986.tar.xz |
Rewind v3.13-rc3+ (78fd82238d0e5716) to v3.12
Diffstat (limited to 'kernel/taskstats.c')
-rw-r--r-- | kernel/taskstats.c | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/kernel/taskstats.c b/kernel/taskstats.c index 13d2f7c..145bb4d 100644 --- a/kernel/taskstats.c +++ b/kernel/taskstats.c @@ -290,7 +290,6 @@ 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; - int ret = 0; if (!cpumask_subset(mask, cpu_possible_mask)) return -EINVAL; @@ -305,10 +304,9 @@ 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)); - if (!s) { - ret = -ENOMEM; + if (!s) goto cleanup; - } + s->pid = pid; s->valid = 1; @@ -341,7 +339,7 @@ cleanup: } up_write(&listeners->sem); } - return ret; + return 0; } static int parse(struct nlattr *na, struct cpumask *mask) @@ -406,15 +404,11 @@ static struct taskstats *mk_reply(struct sk_buff *skb, int type, u32 pid) if (!na) goto err; - if (nla_put(skb, type, sizeof(pid), &pid) < 0) { - nla_nest_cancel(skb, na); + if (nla_put(skb, type, sizeof(pid), &pid) < 0) goto err; - } ret = nla_reserve(skb, TASKSTATS_TYPE_STATS, sizeof(struct taskstats)); - if (!ret) { - nla_nest_cancel(skb, na); + if (!ret) goto err; - } nla_nest_end(skb, na); return nla_data(ret); @@ -673,18 +667,17 @@ err: nlmsg_free(rep_skb); } -static const struct genl_ops taskstats_ops[] = { - { - .cmd = TASKSTATS_CMD_GET, - .doit = taskstats_user_cmd, - .policy = taskstats_cmd_get_policy, - .flags = GENL_ADMIN_PERM, - }, - { - .cmd = CGROUPSTATS_CMD_GET, - .doit = cgroupstats_user_cmd, - .policy = cgroupstats_cmd_get_policy, - }, +static struct genl_ops taskstats_ops = { + .cmd = TASKSTATS_CMD_GET, + .doit = taskstats_user_cmd, + .policy = taskstats_cmd_get_policy, + .flags = GENL_ADMIN_PERM, +}; + +static struct genl_ops cgroupstats_ops = { + .cmd = CGROUPSTATS_CMD_GET, + .doit = cgroupstats_user_cmd, + .policy = cgroupstats_cmd_get_policy, }; /* Needed early in initialization */ @@ -703,13 +696,26 @@ static int __init taskstats_init(void) { int rc; - rc = genl_register_family_with_ops(&family, taskstats_ops); + rc = genl_register_family(&family); if (rc) return rc; + rc = genl_register_ops(&family, &taskstats_ops); + if (rc < 0) + goto err; + + rc = genl_register_ops(&family, &cgroupstats_ops); + if (rc < 0) + goto err_cgroup_ops; + family_registered = 1; pr_info("registered taskstats version %d\n", TASKSTATS_GENL_VERSION); return 0; +err_cgroup_ops: + genl_unregister_ops(&family, &taskstats_ops); +err: + genl_unregister_family(&family); + return rc; } /* |