From 18fd3a521b3f05ea3e3ca2cf7280b7531e55210b Mon Sep 17 00:00:00 2001 From: Pravin B Shelar Date: Tue, 4 Aug 2015 18:07:27 -0700 Subject: [PATCH] datapath: Revert "datapath: Constify netlink structs." This reverts commit 2023bdcfc44c149a8e3b38dcde8f04f2ec3f8501. This commit is causing segfaults when genl compat code is in use. Compat code update genl_multicast_group and genl_family type objects. Therefore these can not be const. Signed-off-by: Pravin B Shelar Acked-by: Joe Stringer --- datapath/datapath.c | 25 ++++++++++++------------- datapath/datapath.h | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/datapath/datapath.c b/datapath/datapath.c index 3d12bd95f..73c0b4a23 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -69,16 +69,16 @@ static struct genl_family dp_datapath_genl_family; static const struct nla_policy flow_policy[]; -static const struct genl_multicast_group ovs_dp_flow_multicast_group = { - .name = OVS_FLOW_MCGROUP, +static struct genl_multicast_group ovs_dp_flow_multicast_group = { + .name = OVS_FLOW_MCGROUP }; -static const struct genl_multicast_group ovs_dp_datapath_multicast_group = { - .name = OVS_DATAPATH_MCGROUP, +static struct genl_multicast_group ovs_dp_datapath_multicast_group = { + .name = OVS_DATAPATH_MCGROUP }; -const struct genl_multicast_group ovs_dp_vport_multicast_group = { - .name = OVS_VPORT_MCGROUP, +struct genl_multicast_group ovs_dp_vport_multicast_group = { + .name = OVS_VPORT_MCGROUP }; /* Check if need to build a reply message. @@ -91,8 +91,7 @@ static bool ovs_must_notify(struct genl_family *family, struct genl_info *info, genl_has_listeners(family, genl_info_net(info), group); } -static void ovs_notify(struct genl_family *family, - const struct genl_multicast_group *grp, +static void ovs_notify(struct genl_family *family, struct genl_multicast_group *grp, struct sk_buff *skb, struct genl_info *info) { genl_notify(family, skb, genl_info_net(info), @@ -637,7 +636,7 @@ static const struct nla_policy packet_policy[OVS_PACKET_ATTR_MAX + 1] = { [OVS_PACKET_ATTR_PROBE] = { .type = NLA_FLAG }, }; -static const struct genl_ops dp_packet_genl_ops[] = { +static struct genl_ops dp_packet_genl_ops[] = { { .cmd = OVS_PACKET_CMD_EXECUTE, .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ .policy = packet_policy, @@ -1372,7 +1371,7 @@ static const struct nla_policy flow_policy[OVS_FLOW_ATTR_MAX + 1] = { [OVS_FLOW_ATTR_UFID_FLAGS] = { .type = NLA_U32 }, }; -static const struct genl_ops dp_flow_genl_ops[] = { +static struct genl_ops dp_flow_genl_ops[] = { { .cmd = OVS_FLOW_CMD_NEW, .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ .policy = flow_policy, @@ -1758,7 +1757,7 @@ static const struct nla_policy datapath_policy[OVS_DP_ATTR_MAX + 1] = { [OVS_DP_ATTR_USER_FEATURES] = { .type = NLA_U32 }, }; -static const struct genl_ops dp_datapath_genl_ops[] = { +static struct genl_ops dp_datapath_genl_ops[] = { { .cmd = OVS_DP_CMD_NEW, .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ .policy = datapath_policy, @@ -2137,7 +2136,7 @@ static const struct nla_policy vport_policy[OVS_VPORT_ATTR_MAX + 1] = { [OVS_VPORT_ATTR_OPTIONS] = { .type = NLA_NESTED }, }; -static const struct genl_ops dp_vport_genl_ops[] = { +static struct genl_ops dp_vport_genl_ops[] = { { .cmd = OVS_VPORT_CMD_NEW, .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ .policy = vport_policy, @@ -2175,7 +2174,7 @@ struct genl_family dp_vport_genl_family = { .n_mcgrps = 1, }; -static struct genl_family * const dp_genl_families[] = { +static struct genl_family *dp_genl_families[] = { &dp_datapath_genl_family, &dp_vport_genl_family, &dp_flow_genl_family, diff --git a/datapath/datapath.h b/datapath/datapath.h index 152d70cee..526ddad37 100644 --- a/datapath/datapath.h +++ b/datapath/datapath.h @@ -186,7 +186,7 @@ static inline struct vport *ovs_vport_ovsl(const struct datapath *dp, int port_n extern struct notifier_block ovs_dp_device_notifier; extern struct genl_family dp_vport_genl_family; -extern const struct genl_multicast_group ovs_dp_vport_multicast_group; +extern struct genl_multicast_group ovs_dp_vport_multicast_group; void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key); void ovs_dp_detach_port(struct vport *); -- 2.20.1