net sched actions: fix module auto-loading
authorRoman Mashak <mrv@mojatatu.com>
Wed, 11 Oct 2017 14:50:30 +0000 (10:50 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 Oct 2017 05:13:20 +0000 (22:13 -0700)
Macro __stringify_1() can stringify a macro argument, however IFE_META_*
are enums, so they never expand, however request_module expects an integer
in IFE module name, so as a result it always fails to auto-load.

Fixes: ef6980b6becb ("introduce IFE action")
Signed-off-by: Roman Mashak <mrv@mojatatu.com>
Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/act_ife.c

index 791aeee..e0bc228 100644 (file)
@@ -248,6 +248,20 @@ static int ife_validate_metatype(struct tcf_meta_ops *ops, void *val, int len)
        return ret;
 }
 
+static const char *ife_meta_id2name(u32 metaid)
+{
+       switch (metaid) {
+       case IFE_META_SKBMARK:
+               return "skbmark";
+       case IFE_META_PRIO:
+               return "skbprio";
+       case IFE_META_TCINDEX:
+               return "tcindex";
+       default:
+               return "unknown";
+       }
+}
+
 /* called when adding new meta information
  * under ife->tcf_lock for existing action
 */
@@ -263,7 +277,7 @@ static int load_metaops_and_vet(struct tcf_ife_info *ife, u32 metaid,
                if (exists)
                        spin_unlock_bh(&ife->tcf_lock);
                rtnl_unlock();
-               request_module("ife-meta-%u", metaid);
+               request_module("ife-meta-%s", ife_meta_id2name(metaid));
                rtnl_lock();
                if (exists)
                        spin_lock_bh(&ife->tcf_lock);