Re: [PATCH 1/2] taskstats: factor out reply assembling

Thomas Graf
2006-11-02T10:33:43Z

* Oleg Nesterov <oleg@tv-sign.ru> 2006-11-01 21:26
> Introduce mk_reply() helper which does all nla_put()s on reply.
>
> Saves 453 bytes and a preparation for the next patch.
>
> Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
>
> taskstats.c | 55 ++++++++++++++++++++++++++++---------------------------
> 1 files changed, 28 insertions(+), 27 deletions(-)
>
> --- STATS/kernel/taskstats.c~5_factor 2006-10-31 16:33:56.000000000 +0300
> +++ STATS/kernel/taskstats.c 2006-11-01 14:00:03.000000000 +0300
> @@ -348,6 +348,25 @@ static int parse(struct nlattr *na, cpum
> return ret;
> }
>
> +static int mk_reply(struct sk_buff *skb, int type, u32 pid, struct taskstats *stats)
> +{
> + struct nlattr *na;
> + int aggr;
> +
> + aggr = TASKSTATS_TYPE_AGGR_TGID;
> + if (type == TASKSTATS_TYPE_PID)
> + aggr = TASKSTATS_TYPE_AGGR_PID;
> +
> + na = nla_nest_start(skb, aggr);
> + NLA_PUT_U32(skb, type, pid);
> + NLA_PUT_TYPE(skb, struct taskstats, TASKSTATS_TYPE_STATS, *stats);
> + nla_nest_end(skb, na);
> +
> + return 0;
> +nla_put_failure:
> + return -1;
> +}

nla_nest_start() may return NULL, either rely on prepare_reply() to be
correct and BUG() on failure or do proper error handling for all
functions.