Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a5ce545 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

xt_hashlimit: fix locking



Commit 2eff25c1
(netfilter: xt_hashlimit: fix race condition and simplify locking)
added a mutex deadlock :
htable_create() is called with hashlimit_mutex already locked

Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9f0beba9
Loading
Loading
Loading
Loading
+0 −4
Original line number Original line Diff line number Diff line
@@ -262,9 +262,7 @@ static int htable_create_v0(struct net *net, struct xt_hashlimit_info *minfo, u_
	hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);
	hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);
	add_timer(&hinfo->timer);
	add_timer(&hinfo->timer);


	mutex_lock(&hashlimit_mutex);
	hlist_add_head(&hinfo->node, &hashlimit_net->htables);
	hlist_add_head(&hinfo->node, &hashlimit_net->htables);
	mutex_unlock(&hashlimit_mutex);


	return 0;
	return 0;
}
}
@@ -327,9 +325,7 @@ static int htable_create(struct net *net, struct xt_hashlimit_mtinfo1 *minfo,
	hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);
	hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);
	add_timer(&hinfo->timer);
	add_timer(&hinfo->timer);


	mutex_lock(&hashlimit_mutex);
	hlist_add_head(&hinfo->node, &hashlimit_net->htables);
	hlist_add_head(&hinfo->node, &hashlimit_net->htables);
	mutex_unlock(&hashlimit_mutex);


	return 0;
	return 0;
}
}