aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2016-10-24 08:40:02 -0400
committerDavid S. Miller <davem@davemloft.net>2016-10-27 16:16:09 -0400
commita07ea4d9941af5a0c6f0be2a71b51ac9c083c5e5 (patch)
tree52d22e6ed0079bb5a78d610c2ee33a783f070553 /net
parentc90c39dab3e02ce45427a214746711f33ad13be6 (diff)
genetlink: no longer support using static family IDs
Static family IDs have never really been used, the only use case was the workaround I introduced for those users that assumed their family ID was also their multicast group ID. Additionally, because static family IDs would never be reserved by the generic netlink code, using a relatively low ID would only work for built-in families that can be registered immediately after generic netlink is started, which is basically only the control family (apart from the workaround code, which I also had to add code for so it would reserve those IDs) Thus, anything other than GENL_ID_GENERATE is flawed and luckily not used except in the cases I mentioned. Move those workarounds into a few lines of code, and then get rid of GENL_ID_GENERATE entirely, making it more robust. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/batman-adv/netlink.c1
-rw-r--r--net/core/devlink.c1
-rw-r--r--net/core/drop_monitor.c1
-rw-r--r--net/hsr/hsr_netlink.c1
-rw-r--r--net/ieee802154/netlink.c1
-rw-r--r--net/ieee802154/nl802154.c1
-rw-r--r--net/ipv4/fou.c1
-rw-r--r--net/ipv4/tcp_metrics.c1
-rw-r--r--net/ipv6/ila/ila_xlat.c1
-rw-r--r--net/irda/irnetlink.c1
-rw-r--r--net/l2tp/l2tp_netlink.c1
-rw-r--r--net/netfilter/ipvs/ip_vs_ctl.c1
-rw-r--r--net/netlabel/netlabel_calipso.c1
-rw-r--r--net/netlabel/netlabel_cipso_v4.c1
-rw-r--r--net/netlabel/netlabel_mgmt.c1
-rw-r--r--net/netlabel/netlabel_unlabeled.c1
-rw-r--r--net/netlink/genetlink.c37
-rw-r--r--net/nfc/netlink.c1
-rw-r--r--net/openvswitch/datapath.c4
-rw-r--r--net/tipc/netlink.c1
-rw-r--r--net/tipc/netlink_compat.c1
-rw-r--r--net/wimax/stack.c1
-rw-r--r--net/wireless/nl80211.c1
23 files changed, 22 insertions, 40 deletions
diff --git a/net/batman-adv/netlink.c b/net/batman-adv/netlink.c
index 64cb6acbe0a6..a03b0ed7e8dd 100644
--- a/net/batman-adv/netlink.c
+++ b/net/batman-adv/netlink.c
@@ -49,7 +49,6 @@
49#include "translation-table.h" 49#include "translation-table.h"
50 50
51struct genl_family batadv_netlink_family = { 51struct genl_family batadv_netlink_family = {
52 .id = GENL_ID_GENERATE,
53 .hdrsize = 0, 52 .hdrsize = 0,
54 .name = BATADV_NL_NAME, 53 .name = BATADV_NL_NAME,
55 .version = 1, 54 .version = 1,
diff --git a/net/core/devlink.c b/net/core/devlink.c
index d2fd736de6a2..3008d9c33875 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -342,7 +342,6 @@ static void devlink_nl_post_doit(const struct genl_ops *ops,
342} 342}
343 343
344static struct genl_family devlink_nl_family = { 344static struct genl_family devlink_nl_family = {
345 .id = GENL_ID_GENERATE,
346 .name = DEVLINK_GENL_NAME, 345 .name = DEVLINK_GENL_NAME,
347 .version = DEVLINK_GENL_VERSION, 346 .version = DEVLINK_GENL_VERSION,
348 .maxattr = DEVLINK_ATTR_MAX, 347 .maxattr = DEVLINK_ATTR_MAX,
diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
index 72cfb0c61125..a5320dfcd978 100644
--- a/net/core/drop_monitor.c
+++ b/net/core/drop_monitor.c
@@ -60,7 +60,6 @@ struct dm_hw_stat_delta {
60}; 60};
61 61
62static struct genl_family net_drop_monitor_family = { 62static struct genl_family net_drop_monitor_family = {
63 .id = GENL_ID_GENERATE,
64 .hdrsize = 0, 63 .hdrsize = 0,
65 .name = "NET_DM", 64 .name = "NET_DM",
66 .version = 2, 65 .version = 2,
diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c
index d4d1617f43a8..2ad039492bee 100644
--- a/net/hsr/hsr_netlink.c
+++ b/net/hsr/hsr_netlink.c
@@ -132,7 +132,6 @@ static const struct nla_policy hsr_genl_policy[HSR_A_MAX + 1] = {
132}; 132};
133 133
134static struct genl_family hsr_genl_family = { 134static struct genl_family hsr_genl_family = {
135 .id = GENL_ID_GENERATE,
136 .hdrsize = 0, 135 .hdrsize = 0,
137 .name = "HSR", 136 .name = "HSR",
138 .version = 1, 137 .version = 1,
diff --git a/net/ieee802154/netlink.c b/net/ieee802154/netlink.c
index c8133c07ceee..19144158b696 100644
--- a/net/ieee802154/netlink.c
+++ b/net/ieee802154/netlink.c
@@ -29,7 +29,6 @@ static unsigned int ieee802154_seq_num;
29static DEFINE_SPINLOCK(ieee802154_seq_lock); 29static DEFINE_SPINLOCK(ieee802154_seq_lock);
30 30
31struct genl_family nl802154_family = { 31struct genl_family nl802154_family = {
32 .id = GENL_ID_GENERATE,
33 .hdrsize = 0, 32 .hdrsize = 0,
34 .name = IEEE802154_NL_NAME, 33 .name = IEEE802154_NL_NAME,
35 .version = 1, 34 .version = 1,
diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c
index 21aabadccd0e..182299858f1d 100644
--- a/net/ieee802154/nl802154.c
+++ b/net/ieee802154/nl802154.c
@@ -34,7 +34,6 @@ static void nl802154_post_doit(const struct genl_ops *ops, struct sk_buff *skb,
34 34
35/* the netlink family */ 35/* the netlink family */
36static struct genl_family nl802154_fam = { 36static struct genl_family nl802154_fam = {
37 .id = GENL_ID_GENERATE, /* don't bother with a hardcoded ID */
38 .name = NL802154_GENL_NAME, /* have users key off the name instead */ 37 .name = NL802154_GENL_NAME, /* have users key off the name instead */
39 .hdrsize = 0, /* no private header */ 38 .hdrsize = 0, /* no private header */
40 .version = 1, /* no particular meaning now */ 39 .version = 1, /* no particular meaning now */
diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c
index cf50f7e2b012..e3fc527c5d37 100644
--- a/net/ipv4/fou.c
+++ b/net/ipv4/fou.c
@@ -623,7 +623,6 @@ static int fou_destroy(struct net *net, struct fou_cfg *cfg)
623} 623}
624 624
625static struct genl_family fou_nl_family = { 625static struct genl_family fou_nl_family = {
626 .id = GENL_ID_GENERATE,
627 .hdrsize = 0, 626 .hdrsize = 0,
628 .name = FOU_GENL_NAME, 627 .name = FOU_GENL_NAME,
629 .version = FOU_GENL_VERSION, 628 .version = FOU_GENL_VERSION,
diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c
index bf1f3b2b29d1..3da305127b32 100644
--- a/net/ipv4/tcp_metrics.c
+++ b/net/ipv4/tcp_metrics.c
@@ -743,7 +743,6 @@ void tcp_fastopen_cache_set(struct sock *sk, u16 mss,
743} 743}
744 744
745static struct genl_family tcp_metrics_nl_family = { 745static struct genl_family tcp_metrics_nl_family = {
746 .id = GENL_ID_GENERATE,
747 .hdrsize = 0, 746 .hdrsize = 0,
748 .name = TCP_METRICS_GENL_NAME, 747 .name = TCP_METRICS_GENL_NAME,
749 .version = TCP_METRICS_GENL_VERSION, 748 .version = TCP_METRICS_GENL_VERSION,
diff --git a/net/ipv6/ila/ila_xlat.c b/net/ipv6/ila/ila_xlat.c
index e604013dd814..0d57e27d1cdd 100644
--- a/net/ipv6/ila/ila_xlat.c
+++ b/net/ipv6/ila/ila_xlat.c
@@ -119,7 +119,6 @@ static const struct rhashtable_params rht_params = {
119}; 119};
120 120
121static struct genl_family ila_nl_family = { 121static struct genl_family ila_nl_family = {
122 .id = GENL_ID_GENERATE,
123 .hdrsize = 0, 122 .hdrsize = 0,
124 .name = ILA_GENL_NAME, 123 .name = ILA_GENL_NAME,
125 .version = ILA_GENL_VERSION, 124 .version = ILA_GENL_VERSION,
diff --git a/net/irda/irnetlink.c b/net/irda/irnetlink.c
index e15c40e86660..f23b81aa91fe 100644
--- a/net/irda/irnetlink.c
+++ b/net/irda/irnetlink.c
@@ -25,7 +25,6 @@
25 25
26 26
27static struct genl_family irda_nl_family = { 27static struct genl_family irda_nl_family = {
28 .id = GENL_ID_GENERATE,
29 .name = IRDA_NL_NAME, 28 .name = IRDA_NL_NAME,
30 .hdrsize = 0, 29 .hdrsize = 0,
31 .version = IRDA_NL_VERSION, 30 .version = IRDA_NL_VERSION,
diff --git a/net/l2tp/l2tp_netlink.c b/net/l2tp/l2tp_netlink.c
index bf3117771822..4fbf1f41ac52 100644
--- a/net/l2tp/l2tp_netlink.c
+++ b/net/l2tp/l2tp_netlink.c
@@ -32,7 +32,6 @@
32 32
33 33
34static struct genl_family l2tp_nl_family = { 34static struct genl_family l2tp_nl_family = {
35 .id = GENL_ID_GENERATE,
36 .name = L2TP_GENL_NAME, 35 .name = L2TP_GENL_NAME,
37 .version = L2TP_GENL_VERSION, 36 .version = L2TP_GENL_VERSION,
38 .hdrsize = 0, 37 .hdrsize = 0,
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index c3c809b2e712..ceed66cdd03e 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -2841,7 +2841,6 @@ static struct nf_sockopt_ops ip_vs_sockopts = {
2841 2841
2842/* IPVS genetlink family */ 2842/* IPVS genetlink family */
2843static struct genl_family ip_vs_genl_family = { 2843static struct genl_family ip_vs_genl_family = {
2844 .id = GENL_ID_GENERATE,
2845 .hdrsize = 0, 2844 .hdrsize = 0,
2846 .name = IPVS_GENL_NAME, 2845 .name = IPVS_GENL_NAME,
2847 .version = IPVS_GENL_VERSION, 2846 .version = IPVS_GENL_VERSION,
diff --git a/net/netlabel/netlabel_calipso.c b/net/netlabel/netlabel_calipso.c
index 2ec93c5e77bb..152e503b8c5d 100644
--- a/net/netlabel/netlabel_calipso.c
+++ b/net/netlabel/netlabel_calipso.c
@@ -61,7 +61,6 @@ struct netlbl_domhsh_walk_arg {
61 61
62/* NetLabel Generic NETLINK CALIPSO family */ 62/* NetLabel Generic NETLINK CALIPSO family */
63static struct genl_family netlbl_calipso_gnl_family = { 63static struct genl_family netlbl_calipso_gnl_family = {
64 .id = GENL_ID_GENERATE,
65 .hdrsize = 0, 64 .hdrsize = 0,
66 .name = NETLBL_NLTYPE_CALIPSO_NAME, 65 .name = NETLBL_NLTYPE_CALIPSO_NAME,
67 .version = NETLBL_PROTO_VERSION, 66 .version = NETLBL_PROTO_VERSION,
diff --git a/net/netlabel/netlabel_cipso_v4.c b/net/netlabel/netlabel_cipso_v4.c
index 7fd1104ba900..755b284e7ad4 100644
--- a/net/netlabel/netlabel_cipso_v4.c
+++ b/net/netlabel/netlabel_cipso_v4.c
@@ -60,7 +60,6 @@ struct netlbl_domhsh_walk_arg {
60 60
61/* NetLabel Generic NETLINK CIPSOv4 family */ 61/* NetLabel Generic NETLINK CIPSOv4 family */
62static struct genl_family netlbl_cipsov4_gnl_family = { 62static struct genl_family netlbl_cipsov4_gnl_family = {
63 .id = GENL_ID_GENERATE,
64 .hdrsize = 0, 63 .hdrsize = 0,
65 .name = NETLBL_NLTYPE_CIPSOV4_NAME, 64 .name = NETLBL_NLTYPE_CIPSOV4_NAME,
66 .version = NETLBL_PROTO_VERSION, 65 .version = NETLBL_PROTO_VERSION,
diff --git a/net/netlabel/netlabel_mgmt.c b/net/netlabel/netlabel_mgmt.c
index f85d0e07af2d..3b00f2368fcd 100644
--- a/net/netlabel/netlabel_mgmt.c
+++ b/net/netlabel/netlabel_mgmt.c
@@ -61,7 +61,6 @@ struct netlbl_domhsh_walk_arg {
61 61
62/* NetLabel Generic NETLINK CIPSOv4 family */ 62/* NetLabel Generic NETLINK CIPSOv4 family */
63static struct genl_family netlbl_mgmt_gnl_family = { 63static struct genl_family netlbl_mgmt_gnl_family = {
64 .id = GENL_ID_GENERATE,
65 .hdrsize = 0, 64 .hdrsize = 0,
66 .name = NETLBL_NLTYPE_MGMT_NAME, 65 .name = NETLBL_NLTYPE_MGMT_NAME,
67 .version = NETLBL_PROTO_VERSION, 66 .version = NETLBL_PROTO_VERSION,
diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
index 4528cff9138b..c2ea8d1f653a 100644
--- a/net/netlabel/netlabel_unlabeled.c
+++ b/net/netlabel/netlabel_unlabeled.c
@@ -124,7 +124,6 @@ static u8 netlabel_unlabel_acceptflg;
124 124
125/* NetLabel Generic NETLINK unlabeled family */ 125/* NetLabel Generic NETLINK unlabeled family */
126static struct genl_family netlbl_unlabel_gnl_family = { 126static struct genl_family netlbl_unlabel_gnl_family = {
127 .id = GENL_ID_GENERATE,
128 .hdrsize = 0, 127 .hdrsize = 0,
129 .name = NETLBL_NLTYPE_UNLABELED_NAME, 128 .name = NETLBL_NLTYPE_UNLABELED_NAME,
130 .version = NETLBL_PROTO_VERSION, 129 .version = NETLBL_PROTO_VERSION,
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index 01291b7a27bb..f19ec969edee 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -349,8 +349,6 @@ static int genl_validate_ops(const struct genl_family *family)
349 * 349 *
350 * Registers the specified family after validating it first. Only one 350 * Registers the specified family after validating it first. Only one
351 * family may be registered with the same family name or identifier. 351 * family may be registered with the same family name or identifier.
352 * The family id may equal GENL_ID_GENERATE causing an unique id to
353 * be automatically generated and assigned.
354 * 352 *
355 * The family's ops array must already be assigned, you can use the 353 * The family's ops array must already be assigned, you can use the
356 * genl_register_family_with_ops() helper function. 354 * genl_register_family_with_ops() helper function.
@@ -359,13 +357,7 @@ static int genl_validate_ops(const struct genl_family *family)
359 */ 357 */
360int __genl_register_family(struct genl_family *family) 358int __genl_register_family(struct genl_family *family)
361{ 359{
362 int err = -EINVAL, i; 360 int err, i;
363
364 if (family->id && family->id < GENL_MIN_ID)
365 goto errout;
366
367 if (family->id > GENL_MAX_ID)
368 goto errout;
369 361
370 err = genl_validate_ops(family); 362 err = genl_validate_ops(family);
371 if (err) 363 if (err)
@@ -378,8 +370,27 @@ int __genl_register_family(struct genl_family *family)
378 goto errout_locked; 370 goto errout_locked;
379 } 371 }
380 372
381 if (family->id == GENL_ID_GENERATE) { 373 if (family == &genl_ctrl) {
382 u16 newid = genl_generate_id(); 374 family->id = GENL_ID_CTRL;
375 } else {
376 u16 newid;
377
378 /* this should be left zero in the struct */
379 WARN_ON(family->id);
380
381 /*
382 * Sadly, a few cases need to be special-cased
383 * due to them having previously abused the API
384 * and having used their family ID also as their
385 * multicast group ID, so we use reserved IDs
386 * for both to be sure we can do that mapping.
387 */
388 if (strcmp(family->name, "pmcraid") == 0)
389 newid = GENL_ID_PMCRAID;
390 else if (strcmp(family->name, "VFS_DQUOT") == 0)
391 newid = GENL_ID_VFS_DQUOT;
392 else
393 newid = genl_generate_id();
383 394
384 if (!newid) { 395 if (!newid) {
385 err = -ENOMEM; 396 err = -ENOMEM;
@@ -387,9 +398,6 @@ int __genl_register_family(struct genl_family *family)
387 } 398 }
388 399
389 family->id = newid; 400 family->id = newid;
390 } else if (genl_family_find_byid(family->id)) {
391 err = -EEXIST;
392 goto errout_locked;
393 } 401 }
394 402
395 if (family->maxattr && !family->parallel_ops) { 403 if (family->maxattr && !family->parallel_ops) {
@@ -419,7 +427,6 @@ int __genl_register_family(struct genl_family *family)
419 427
420errout_locked: 428errout_locked:
421 genl_unlock_all(); 429 genl_unlock_all();
422errout:
423 return err; 430 return err;
424} 431}
425EXPORT_SYMBOL(__genl_register_family); 432EXPORT_SYMBOL(__genl_register_family);
diff --git a/net/nfc/netlink.c b/net/nfc/netlink.c
index 79786bf62b88..c230403e066c 100644
--- a/net/nfc/netlink.c
+++ b/net/nfc/netlink.c
@@ -39,7 +39,6 @@ static const struct genl_multicast_group nfc_genl_mcgrps[] = {
39}; 39};
40 40
41static struct genl_family nfc_genl_family = { 41static struct genl_family nfc_genl_family = {
42 .id = GENL_ID_GENERATE,
43 .hdrsize = 0, 42 .hdrsize = 0,
44 .name = NFC_GENL_NAME, 43 .name = NFC_GENL_NAME,
45 .version = NFC_GENL_VERSION, 44 .version = NFC_GENL_VERSION,
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 194435aa1165..f9fef7dfba15 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -671,7 +671,6 @@ static const struct genl_ops dp_packet_genl_ops[] = {
671}; 671};
672 672
673static struct genl_family dp_packet_genl_family = { 673static struct genl_family dp_packet_genl_family = {
674 .id = GENL_ID_GENERATE,
675 .hdrsize = sizeof(struct ovs_header), 674 .hdrsize = sizeof(struct ovs_header),
676 .name = OVS_PACKET_FAMILY, 675 .name = OVS_PACKET_FAMILY,
677 .version = OVS_PACKET_VERSION, 676 .version = OVS_PACKET_VERSION,
@@ -1436,7 +1435,6 @@ static const struct genl_ops dp_flow_genl_ops[] = {
1436}; 1435};
1437 1436
1438static struct genl_family dp_flow_genl_family = { 1437static struct genl_family dp_flow_genl_family = {
1439 .id = GENL_ID_GENERATE,
1440 .hdrsize = sizeof(struct ovs_header), 1438 .hdrsize = sizeof(struct ovs_header),
1441 .name = OVS_FLOW_FAMILY, 1439 .name = OVS_FLOW_FAMILY,
1442 .version = OVS_FLOW_VERSION, 1440 .version = OVS_FLOW_VERSION,
@@ -1822,7 +1820,6 @@ static const struct genl_ops dp_datapath_genl_ops[] = {
1822}; 1820};
1823 1821
1824static struct genl_family dp_datapath_genl_family = { 1822static struct genl_family dp_datapath_genl_family = {
1825 .id = GENL_ID_GENERATE,
1826 .hdrsize = sizeof(struct ovs_header), 1823 .hdrsize = sizeof(struct ovs_header),
1827 .name = OVS_DATAPATH_FAMILY, 1824 .name = OVS_DATAPATH_FAMILY,
1828 .version = OVS_DATAPATH_VERSION, 1825 .version = OVS_DATAPATH_VERSION,
@@ -2244,7 +2241,6 @@ static const struct genl_ops dp_vport_genl_ops[] = {
2244}; 2241};
2245 2242
2246struct genl_family dp_vport_genl_family = { 2243struct genl_family dp_vport_genl_family = {
2247 .id = GENL_ID_GENERATE,
2248 .hdrsize = sizeof(struct ovs_header), 2244 .hdrsize = sizeof(struct ovs_header),
2249 .name = OVS_VPORT_FAMILY, 2245 .name = OVS_VPORT_FAMILY,
2250 .version = OVS_VPORT_VERSION, 2246 .version = OVS_VPORT_VERSION,
diff --git a/net/tipc/netlink.c b/net/tipc/netlink.c
index 4b94f3cfe3af..383b8fedabc7 100644
--- a/net/tipc/netlink.c
+++ b/net/tipc/netlink.c
@@ -136,7 +136,6 @@ const struct nla_policy tipc_nl_udp_policy[TIPC_NLA_UDP_MAX + 1] = {
136 * so we have a separate genl handling for the new API. 136 * so we have a separate genl handling for the new API.
137 */ 137 */
138struct genl_family tipc_genl_family = { 138struct genl_family tipc_genl_family = {
139 .id = GENL_ID_GENERATE,
140 .name = TIPC_GENL_V2_NAME, 139 .name = TIPC_GENL_V2_NAME,
141 .version = TIPC_GENL_V2_VERSION, 140 .version = TIPC_GENL_V2_VERSION,
142 .hdrsize = 0, 141 .hdrsize = 0,
diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c
index 1fd464764765..f04428e4c8e5 100644
--- a/net/tipc/netlink_compat.c
+++ b/net/tipc/netlink_compat.c
@@ -1216,7 +1216,6 @@ send:
1216} 1216}
1217 1217
1218static struct genl_family tipc_genl_compat_family = { 1218static struct genl_family tipc_genl_compat_family = {
1219 .id = GENL_ID_GENERATE,
1220 .name = TIPC_GENL_NAME, 1219 .name = TIPC_GENL_NAME,
1221 .version = TIPC_GENL_VERSION, 1220 .version = TIPC_GENL_VERSION,
1222 .hdrsize = TIPC_GENL_HDRLEN, 1221 .hdrsize = TIPC_GENL_HDRLEN,
diff --git a/net/wimax/stack.c b/net/wimax/stack.c
index 3f816e2971ee..8ac83a41585f 100644
--- a/net/wimax/stack.c
+++ b/net/wimax/stack.c
@@ -573,7 +573,6 @@ size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL);
573 573
574 574
575struct genl_family wimax_gnl_family = { 575struct genl_family wimax_gnl_family = {
576 .id = GENL_ID_GENERATE,
577 .name = "WiMAX", 576 .name = "WiMAX",
578 .version = WIMAX_GNL_VERSION, 577 .version = WIMAX_GNL_VERSION,
579 .hdrsize = 0, 578 .hdrsize = 0,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 7d8cb3330c86..714beafe05e0 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -39,7 +39,6 @@ static void nl80211_post_doit(const struct genl_ops *ops, struct sk_buff *skb,
39 39
40/* the netlink family */ 40/* the netlink family */
41static struct genl_family nl80211_fam = { 41static struct genl_family nl80211_fam = {
42 .id = GENL_ID_GENERATE, /* don't bother with a hardcoded ID */
43 .name = NL80211_GENL_NAME, /* have users key off the name instead */ 42 .name = NL80211_GENL_NAME, /* have users key off the name instead */
44 .hdrsize = 0, /* no private header */ 43 .hdrsize = 0, /* no private header */
45 .version = 1, /* no particular meaning now */ 44 .version = 1, /* no particular meaning now */