aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Pirko <jiri@resnulli.us>2013-06-10 17:42:24 +0200
committerDavid S. Miller <davem@davemloft.net>2013-06-12 03:05:54 -0700
commitd80b35beac78b52faad2359adf6a6b14e2725e51 (patch)
tree60f0677f96a44d8735a55bbeb64d7b5609605d08
parentteam: remove synchronize_rcu() called during queue override change (diff)
downloadlinux-dev-d80b35beac78b52faad2359adf6a6b14e2725e51.tar.xz
linux-dev-d80b35beac78b52faad2359adf6a6b14e2725e51.zip
team: use kfree_rcu instead of synchronize_rcu in team_port_dev
Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/team/team.c3
-rw-r--r--include/linux/if_team.h1
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 9cbe09df7765..488ed4f535e5 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1192,8 +1192,7 @@ static int team_port_del(struct team *team, struct net_device *port_dev)
team_port_set_orig_dev_addr(port);
dev_set_mtu(port_dev, port->orig.mtu);
- synchronize_rcu();
- kfree(port);
+ kfree_rcu(port, rcu);
netdev_info(dev, "Port device %s removed\n", portname);
__team_compute_features(team);
diff --git a/include/linux/if_team.h b/include/linux/if_team.h
index 4474557904f6..705459524706 100644
--- a/include/linux/if_team.h
+++ b/include/linux/if_team.h
@@ -69,6 +69,7 @@ struct team_port {
s32 priority; /* lower number ~ higher priority */
u16 queue_id;
struct list_head qom_list; /* node in queue override mapping list */
+ struct rcu_head rcu;
long mode_priv[0];
};