2006-10-29 14:57:31

by Oleg Nesterov

[permalink] [raw]
Subject: [PATCH] taskstats: fix? sk_buff size calculation

Again, I am not sure this patch is correct, it needs an ack...

prepare_reply() adds GENL_HDRLEN to the payload (genlmsg_total_size()),
but then it does genlmsg_put()->nlmsg_put(). This means we forget to
reserve a room for 'struct nlmsghdr', no?

Signed-off-by: Oleg Nesterov <[email protected]>

--- STATS/kernel/taskstats.c~2_size 2006-10-29 16:39:10.000000000 +0300
+++ STATS/kernel/taskstats.c 2006-10-29 18:35:40.000000000 +0300
@@ -77,7 +77,8 @@ static int prepare_reply(struct genl_inf
/*
* If new attributes are added, please revisit this allocation
*/
- skb = nlmsg_new(genlmsg_total_size(size), GFP_KERNEL);
+ size = nlmsg_total_size(genlmsg_total_size(size));
+ skb = nlmsg_new(size, GFP_KERNEL);
if (!skb)
return -ENOMEM;