summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorJiri Pirko <jiri@resnulli.us>2013-06-10 17:42:25 +0200
committerDavid S. Miller <davem@davemloft.net>2013-06-12 03:06:16 -0700
commit735d381fa57c573935d35a24ea271ec99897ac63 (patch)
treee1118f79060396214ac150339eaa6a3a1c7c2168 /include/linux
parentd80b35beac78b52faad2359adf6a6b14e2725e51 (diff)
downloadlinux-735d381fa57c573935d35a24ea271ec99897ac63.tar.gz
linux-735d381fa57c573935d35a24ea271ec99897ac63.tar.bz2
linux-735d381fa57c573935d35a24ea271ec99897ac63.zip
team: remove synchronize_rcu() called during port disable
Check the unlikely case of team->en_port_count == 0 before modulo operation. Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/if_team.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/if_team.h b/include/linux/if_team.h
index 705459524706..b662045a81c0 100644
--- a/include/linux/if_team.h
+++ b/include/linux/if_team.h
@@ -229,6 +229,16 @@ static inline struct team_port *team_get_port_by_index(struct team *team,
return port;
return NULL;
}
+
+static inline int team_num_to_port_index(struct team *team, int num)
+{
+ int en_port_count = ACCESS_ONCE(team->en_port_count);
+
+ if (unlikely(!en_port_count))
+ return 0;
+ return num % en_port_count;
+}
+
static inline struct team_port *team_get_port_by_index_rcu(struct team *team,
int port_index)
{