summaryrefslogtreecommitdiffstats
path: root/net/openvswitch/datapath.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2016-10-24 08:40:05 -0400
committerDavid S. Miller <davem@davemloft.net>2016-10-27 16:16:09 -0400
commit56989f6d8568c21257dcec0f5e644d5570ba3281 (patch)
tree60a6b44865e68e25dbc8bcc38d0000e12106f2d8 /net/openvswitch/datapath.c
parent2ae0f17df1cd52aafd1ab0415ea1f1dd56dc0e2a (diff)
genetlink: mark families as __ro_after_init
Now genl_register_family() is the only thing (other than the users themselves, perhaps, but I didn't find any doing that) writing to the family struct. In all families that I found, genl_register_family() is only called from __init functions (some indirectly, in which case I've add __init annotations to clarifly things), so all can actually be marked __ro_after_init. This protects the data structure from accidental corruption. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch/datapath.c')
-rw-r--r--net/openvswitch/datapath.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index ad6a111a0014..fa8760176b7d 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -670,7 +670,7 @@ static const struct genl_ops dp_packet_genl_ops[] = {
670 } 670 }
671}; 671};
672 672
673static struct genl_family dp_packet_genl_family = { 673static struct genl_family dp_packet_genl_family __ro_after_init = {
674 .hdrsize = sizeof(struct ovs_header), 674 .hdrsize = sizeof(struct ovs_header),
675 .name = OVS_PACKET_FAMILY, 675 .name = OVS_PACKET_FAMILY,
676 .version = OVS_PACKET_VERSION, 676 .version = OVS_PACKET_VERSION,
@@ -1435,7 +1435,7 @@ static const struct genl_ops dp_flow_genl_ops[] = {
1435 }, 1435 },
1436}; 1436};
1437 1437
1438static struct genl_family dp_flow_genl_family = { 1438static struct genl_family dp_flow_genl_family __ro_after_init = {
1439 .hdrsize = sizeof(struct ovs_header), 1439 .hdrsize = sizeof(struct ovs_header),
1440 .name = OVS_FLOW_FAMILY, 1440 .name = OVS_FLOW_FAMILY,
1441 .version = OVS_FLOW_VERSION, 1441 .version = OVS_FLOW_VERSION,
@@ -1821,7 +1821,7 @@ static const struct genl_ops dp_datapath_genl_ops[] = {
1821 }, 1821 },
1822}; 1822};
1823 1823
1824static struct genl_family dp_datapath_genl_family = { 1824static struct genl_family dp_datapath_genl_family __ro_after_init = {
1825 .hdrsize = sizeof(struct ovs_header), 1825 .hdrsize = sizeof(struct ovs_header),
1826 .name = OVS_DATAPATH_FAMILY, 1826 .name = OVS_DATAPATH_FAMILY,
1827 .version = OVS_DATAPATH_VERSION, 1827 .version = OVS_DATAPATH_VERSION,
@@ -2243,7 +2243,7 @@ static const struct genl_ops dp_vport_genl_ops[] = {
2243 }, 2243 },
2244}; 2244};
2245 2245
2246struct genl_family dp_vport_genl_family = { 2246struct genl_family dp_vport_genl_family __ro_after_init = {
2247 .hdrsize = sizeof(struct ovs_header), 2247 .hdrsize = sizeof(struct ovs_header),
2248 .name = OVS_VPORT_FAMILY, 2248 .name = OVS_VPORT_FAMILY,
2249 .version = OVS_VPORT_VERSION, 2249 .version = OVS_VPORT_VERSION,
@@ -2272,7 +2272,7 @@ static void dp_unregister_genl(int n_families)
2272 genl_unregister_family(dp_genl_families[i]); 2272 genl_unregister_family(dp_genl_families[i]);
2273} 2273}
2274 2274
2275static int dp_register_genl(void) 2275static int __init dp_register_genl(void)
2276{ 2276{
2277 int err; 2277 int err;
2278 int i; 2278 int i;