diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/quota/netlink.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/fs/quota/netlink.c b/fs/quota/netlink.c index 16e8abb7709b..aa22fe03b76c 100644 --- a/fs/quota/netlink.c +++ b/fs/quota/netlink.c | |||
@@ -11,13 +11,23 @@ | |||
11 | 11 | ||
12 | /* Netlink family structure for quota */ | 12 | /* Netlink family structure for quota */ |
13 | static struct genl_family quota_genl_family = { | 13 | static struct genl_family quota_genl_family = { |
14 | .id = GENL_ID_GENERATE, | 14 | /* |
15 | * Needed due to multicast group ID abuse - old code assumed | ||
16 | * the family ID was also a valid multicast group ID (which | ||
17 | * isn't true) and userspace might thus rely on it. Assign a | ||
18 | * static ID for this group to make dealing with that easier. | ||
19 | */ | ||
20 | .id = GENL_ID_VFS_DQUOT, | ||
15 | .hdrsize = 0, | 21 | .hdrsize = 0, |
16 | .name = "VFS_DQUOT", | 22 | .name = "VFS_DQUOT", |
17 | .version = 1, | 23 | .version = 1, |
18 | .maxattr = QUOTA_NL_A_MAX, | 24 | .maxattr = QUOTA_NL_A_MAX, |
19 | }; | 25 | }; |
20 | 26 | ||
27 | static struct genl_multicast_group quota_mcgrp = { | ||
28 | .name = "events", | ||
29 | }; | ||
30 | |||
21 | /** | 31 | /** |
22 | * quota_send_warning - Send warning to userspace about exceeded quota | 32 | * quota_send_warning - Send warning to userspace about exceeded quota |
23 | * @type: The quota type: USRQQUOTA, GRPQUOTA,... | 33 | * @type: The quota type: USRQQUOTA, GRPQUOTA,... |
@@ -78,7 +88,7 @@ void quota_send_warning(struct kqid qid, dev_t dev, | |||
78 | goto attr_err_out; | 88 | goto attr_err_out; |
79 | genlmsg_end(skb, msg_head); | 89 | genlmsg_end(skb, msg_head); |
80 | 90 | ||
81 | genlmsg_multicast(skb, 0, quota_genl_family.id, GFP_NOFS); | 91 | genlmsg_multicast(skb, 0, quota_mcgrp.id, GFP_NOFS); |
82 | return; | 92 | return; |
83 | attr_err_out: | 93 | attr_err_out: |
84 | printk(KERN_ERR "VFS: Not enough space to compose quota message!\n"); | 94 | printk(KERN_ERR "VFS: Not enough space to compose quota message!\n"); |
@@ -92,6 +102,9 @@ static int __init quota_init(void) | |||
92 | if (genl_register_family("a_genl_family) != 0) | 102 | if (genl_register_family("a_genl_family) != 0) |
93 | printk(KERN_ERR | 103 | printk(KERN_ERR |
94 | "VFS: Failed to create quota netlink interface.\n"); | 104 | "VFS: Failed to create quota netlink interface.\n"); |
105 | if (genl_register_mc_group("a_genl_family, "a_mcgrp)) | ||
106 | printk(KERN_ERR | ||
107 | "VFS: Failed to register quota mcast group.\n"); | ||
95 | return 0; | 108 | return 0; |
96 | }; | 109 | }; |
97 | 110 | ||