summaryrefslogtreecommitdiff
path: root/net/sched/ematch.c
diff options
context:
space:
mode:
authorIgnacy Gawędzki <ignacy.gawedzki@green-communications.fr>2015-02-17 22:15:20 +0300
committerDavid S. Miller <davem@davemloft.net>2015-02-20 23:30:56 +0300
commit34eea79e2664b314cab6a30fc582fdfa7a1bb1df (patch)
treefac30f2ab8adee79b12cdafd428df0ec6eaf984f /net/sched/ematch.c
parent54da5a8be3c1e924c35480eb44c6e9b275f6444e (diff)
downloadlinux-34eea79e2664b314cab6a30fc582fdfa7a1bb1df.tar.xz
ematch: Fix auto-loading of ematch modules.
In tcf_em_validate(), after calling request_module() to load the kind-specific module, set em->ops to NULL before returning -EAGAIN, so that module_put() is not called again by tcf_em_tree_destroy(). Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr> Acked-by: Cong Wang <cwang@twopensource.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/ematch.c')
-rw-r--r--net/sched/ematch.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/sched/ematch.c b/net/sched/ematch.c
index 6742200b1307..fbb7ebfc58c6 100644
--- a/net/sched/ematch.c
+++ b/net/sched/ematch.c
@@ -228,6 +228,7 @@ static int tcf_em_validate(struct tcf_proto *tp,
* to replay the request.
*/
module_put(em->ops->owner);
+ em->ops = NULL;
err = -EAGAIN;
}
#endif