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

Commit 568a153a authored by WANG Cong's avatar WANG Cong Committed by David S. Miller
Browse files

net_sched: fix a regression in tc actions



This patch fixes:
1) pass mask rather than size to tcf_hashinfo_init()
2) the cleanup should be in reversed order in mirred_cleanup_module()

Reported-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Fixes: 369ba567 ("net_sched: init struct tcf_hashinfo at register time")
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 852ad5e6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -586,7 +586,7 @@ MODULE_LICENSE("GPL");

static int __init csum_init_module(void)
{
	int err = tcf_hashinfo_init(&csum_hash_info, CSUM_TAB_MASK+1);
	int err = tcf_hashinfo_init(&csum_hash_info, CSUM_TAB_MASK);
	if (err)
		return err;

+1 −1
Original line number Diff line number Diff line
@@ -208,7 +208,7 @@ MODULE_LICENSE("GPL");

static int __init gact_init_module(void)
{
	int err = tcf_hashinfo_init(&gact_hash_info, GACT_TAB_MASK+1);
	int err = tcf_hashinfo_init(&gact_hash_info, GACT_TAB_MASK);
	if (err)
		return err;
#ifdef CONFIG_GACT_PROB
+1 −1
Original line number Diff line number Diff line
@@ -314,7 +314,7 @@ MODULE_ALIAS("act_xt");
static int __init ipt_init_module(void)
{
	int ret1, ret2, err;
	err = tcf_hashinfo_init(&ipt_hash_info, IPT_TAB_MASK+1);
	err = tcf_hashinfo_init(&ipt_hash_info, IPT_TAB_MASK);
	if (err)
		return err;

+3 −3
Original line number Diff line number Diff line
@@ -276,7 +276,7 @@ static int __init mirred_init_module(void)
	if (err)
		return err;

	err = tcf_hashinfo_init(&mirred_hash_info, MIRRED_TAB_MASK+1);
	err = tcf_hashinfo_init(&mirred_hash_info, MIRRED_TAB_MASK);
	if (err) {
		unregister_netdevice_notifier(&mirred_device_notifier);
		return err;
@@ -287,9 +287,9 @@ static int __init mirred_init_module(void)

static void __exit mirred_cleanup_module(void)
{
	unregister_netdevice_notifier(&mirred_device_notifier);
	tcf_hashinfo_destroy(&mirred_hash_info);
	tcf_unregister_action(&act_mirred_ops);
	tcf_hashinfo_destroy(&mirred_hash_info);
	unregister_netdevice_notifier(&mirred_device_notifier);
}

module_init(mirred_init_module);
+1 −1
Original line number Diff line number Diff line
@@ -310,7 +310,7 @@ MODULE_LICENSE("GPL");

static int __init nat_init_module(void)
{
	int err = tcf_hashinfo_init(&nat_hash_info, NAT_TAB_MASK+1);
	int err = tcf_hashinfo_init(&nat_hash_info, NAT_TAB_MASK);
	if (err)
		return err;
	return tcf_register_action(&act_nat_ops);
Loading