]> err.no Git - linux-2.6/blobdiff - net/sched/ematch.c
[NET] ROSE: Fix whitespace errors.
[linux-2.6] / net / sched / ematch.c
index 24837391640d6e7da5c126579eca26e64894f514..f3a104e323bddd50c299c74c928a95038f1f5af5 100644 (file)
@@ -222,6 +222,19 @@ static int tcf_em_validate(struct tcf_proto *tp,
 
                if (em->ops == NULL) {
                        err = -ENOENT;
+#ifdef CONFIG_KMOD
+                       __rtnl_unlock();
+                       request_module("ematch-kind-%u", em_hdr->kind);
+                       rtnl_lock();
+                       em->ops = tcf_em_lookup(em_hdr->kind);
+                       if (em->ops) {
+                               /* We dropped the RTNL mutex in order to
+                                * perform the module load. Tell the caller
+                                * to replay the request. */
+                               module_put(em->ops->owner);
+                               err = -EAGAIN;
+                       }
+#endif
                        goto errout;
                }