Skip to content

Commit

Permalink
Fix computation of SKB size for quota messages
Browse files Browse the repository at this point in the history
Fix computation of size of skb needed for quota message.  We should use
netlink provided functions and not just an ad-hoc number.  Also don't print
the return value from nla_put_foo() as it is always -1.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Jan Kara authored and Linus Torvalds committed Dec 23, 2007
1 parent b886290 commit 22dd483
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions fs/dquot.c
Original file line number Diff line number Diff line change
Expand Up @@ -895,9 +895,6 @@ static void print_warning(struct dquot *dquot, const char warntype)

#ifdef CONFIG_QUOTA_NETLINK_INTERFACE

/* Size of quota netlink message - actually an upperbound for buffer size */
#define QUOTA_NL_MSG_SIZE 32

/* Netlink family structure for quota */
static struct genl_family quota_genl_family = {
.id = GENL_ID_GENERATE,
Expand All @@ -914,11 +911,13 @@ static void send_warning(const struct dquot *dquot, const char warntype)
struct sk_buff *skb;
void *msg_head;
int ret;
int msg_size = 4 * nla_total_size(sizeof(u32)) +
2 * nla_total_size(sizeof(u64));

/* We have to allocate using GFP_NOFS as we are called from a
* filesystem performing write and thus further recursion into
* the fs to free some data could cause deadlocks. */
skb = genlmsg_new(QUOTA_NL_MSG_SIZE, GFP_NOFS);
skb = genlmsg_new(msg_size, GFP_NOFS);
if (!skb) {
printk(KERN_ERR
"VFS: Not enough memory to send quota warning.\n");
Expand Down Expand Up @@ -959,7 +958,7 @@ static void send_warning(const struct dquot *dquot, const char warntype)
"VFS: Failed to send notification message: %d\n", ret);
return;
attr_err_out:
printk(KERN_ERR "VFS: Failed to compose quota message: %d\n", ret);
printk(KERN_ERR "VFS: Not enough space to compose quota message!\n");
err_out:
kfree_skb(skb);
}
Expand Down

0 comments on commit 22dd483

Please sign in to comment.