Commit cd58278b authored by Eric W. Biederman's avatar Eric W. Biederman Committed by Simon Horman
Browse files

ipvs: Cache ipvs in ip_vs_genl_set_cmd



Compute ipvs early in ip_vs_genl_set_cmd and use the cached value to
access ipvs->sync_state.

Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
Acked-by: default avatarJulian Anastasov <ja@ssi.bg>
Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
parent 8e743f1b
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -3516,8 +3516,10 @@ static int ip_vs_genl_set_cmd(struct sk_buff *skb, struct genl_info *info)
	int ret = 0, cmd;
	int need_full_svc = 0, need_full_dest = 0;
	struct net *net;
	struct netns_ipvs *ipvs;

	net = skb_sknet(skb);
	ipvs = net_ipvs(net);
	cmd = info->genlhdr->cmd;

	mutex_lock(&__ip_vs_mutex);
@@ -3579,7 +3581,7 @@ static int ip_vs_genl_set_cmd(struct sk_buff *skb, struct genl_info *info)
			/* The synchronization protocol is incompatible
			 * with mixed family services
			 */
			if (net_ipvs(net)->sync_state) {
			if (ipvs->sync_state) {
				ret = -EINVAL;
				goto out;
			}