diff options
| author | Oleg Nesterov <oleg@tv-sign.ru> | 2006-10-29 10:57:16 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-29 15:07:37 -0500 |
| commit | 3d8334def5cf831d2ed438aae021696a2faa4ddd (patch) | |
| tree | 6ba3582c4927bff20fd0e8e4fd3230680a5d8718 | |
| parent | d46a3d0d07ba539aea5b0e1ad30e568f0cb03576 (diff) | |
[PATCH] taskstats: fix sk_buff size calculation
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 <oleg@tv-sign.ru>
Cc: Thomas Graf <tgraf@suug.ch>
Cc: Andrew Morton <akpm@osdl.org>
Cc: Shailabh Nagar <nagar@watson.ibm.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Jay Lan <jlan@sgi.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | kernel/taskstats.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/taskstats.c b/kernel/taskstats.c index f3c3e9d43d2c..2039585ec5e1 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, | |||
| 77 | /* | 77 | /* |
| 78 | * If new attributes are added, please revisit this allocation | 78 | * If new attributes are added, please revisit this allocation |
| 79 | */ | 79 | */ |
| 80 | skb = nlmsg_new(genlmsg_total_size(size), GFP_KERNEL); | 80 | size = nlmsg_total_size(genlmsg_total_size(size)); |
| 81 | skb = nlmsg_new(size, GFP_KERNEL); | ||
| 81 | if (!skb) | 82 | if (!skb) |
| 82 | return -ENOMEM; | 83 | return -ENOMEM; |
| 83 | 84 | ||
