From: Adrian Bunk We'd better not nlmsg_free on a pointer containing an undefined value (and without having anything allocated). Spotted by the Coverity checker. Signed-off-by: Adrian Bunk Acked-by: Balbir Singh Signed-off-by: Andrew Morton --- kernel/taskstats.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff -puN kernel/taskstats.c~kernel-taskstatsc-fix-bogus-nlmsg_free kernel/taskstats.c --- a/kernel/taskstats.c~kernel-taskstatsc-fix-bogus-nlmsg_free +++ a/kernel/taskstats.c @@ -398,31 +398,31 @@ static int cgroupstats_user_cmd(struct s fd = nla_get_u32(info->attrs[CGROUPSTATS_CMD_ATTR_FD]); file = fget_light(fd, &fput_needed); - if (file) { - size = nla_total_size(sizeof(struct cgroupstats)); + if (!file) + return 0; - rc = prepare_reply(info, CGROUPSTATS_CMD_NEW, &rep_skb, - size); - if (rc < 0) - goto err; - - na = nla_reserve(rep_skb, CGROUPSTATS_TYPE_CGROUP_STATS, - sizeof(struct cgroupstats)); - stats = nla_data(na); - memset(stats, 0, sizeof(*stats)); + size = nla_total_size(sizeof(struct cgroupstats)); - rc = cgroupstats_build(stats, file->f_dentry); - if (rc < 0) - goto err; + rc = prepare_reply(info, CGROUPSTATS_CMD_NEW, &rep_skb, + size); + if (rc < 0) + goto err; - fput_light(file, fput_needed); - return send_reply(rep_skb, info->snd_pid); + na = nla_reserve(rep_skb, CGROUPSTATS_TYPE_CGROUP_STATS, + sizeof(struct cgroupstats)); + stats = nla_data(na); + memset(stats, 0, sizeof(*stats)); + + rc = cgroupstats_build(stats, file->f_dentry); + if (rc < 0) { + nlmsg_free(rep_skb); + goto err; } + rc = send_reply(rep_skb, info->snd_pid); + err: - if (file) - fput_light(file, fput_needed); - nlmsg_free(rep_skb); + fput_light(file, fput_needed); return rc; } _