projects/linux·commit 3d8334de

[PATCH] taskstats: fix sk_buff size calculation

3d8334de · Oleg Nesterov <[email protected]> · 2006-10-29 18:57:16 +03:00

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'.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Thomas Graf <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Shailabh Nagar <[email protected]>
Cc: Balbir Singh <[email protected]>
Cc: Jay Lan <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
3d8334def5cf831d2ed438aae021696a2faa4ddd
Parents
d46a3d0d

Changes

1 files changed · +2 −1

FileStatusAddDelContent
kernel/taskstats.cmodified+2−1View file

kernel/taskstats.c

View file
diff --git a/kernel/taskstats.c b/kernel/taskstats.c
index f3c3e9d..2039585 100644
--- a/kernel/taskstats.c
+++ b/kernel/taskstats.c
@@ -77,7 +77,8 @@ static int prepare_reply(struct genl_info *info, u8 cmd, struct sk_buff **skbp,
/*
* 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;