netfilter: xt_TEE: add missing code to get interface index in checkentry.
authorTaehee Yoo <ap420073@gmail.com>
Sat, 6 Oct 2018 15:09:32 +0000 (00:09 +0900)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 11 Oct 2018 09:29:14 +0000 (11:29 +0200)
checkentry(tee_tg_check) should initialize priv->oif from dev if possible.
But only netdevice notifier handler can set that.
Hence priv->oif is always -1 until notifier handler is called.

Fixes: 9e2f6c5d78db ("netfilter: Rework xt_TEE netdevice notifier")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/xt_TEE.c

index 673ad20..1dae02a 100644 (file)
@@ -104,6 +104,8 @@ static int tee_tg_check(const struct xt_tgchk_param *par)
                return -EINVAL;
 
        if (info->oif[0]) {
+               struct net_device *dev;
+
                if (info->oif[sizeof(info->oif)-1] != '\0')
                        return -EINVAL;
 
@@ -115,6 +117,11 @@ static int tee_tg_check(const struct xt_tgchk_param *par)
                priv->oif     = -1;
                info->priv    = priv;
 
+               dev = dev_get_by_name(par->net, info->oif);
+               if (dev) {
+                       priv->oif = dev->ifindex;
+                       dev_put(dev);
+               }
                mutex_lock(&tn->lock);
                list_add(&priv->list, &tn->priv_list);
                mutex_unlock(&tn->lock);