]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
dccp: catch failed request_module call in dccp_probe init
authorWang Weidong <wangweidong1@huawei.com>
Wed, 18 Dec 2013 02:24:33 +0000 (19:24 -0700)
committerWilly Tarreau <w@1wt.eu>
Fri, 18 Sep 2015 11:52:19 +0000 (13:52 +0200)
commit 965cdea825693c821d200e38fac9402cde6dce6a upstream.

Check the return value of request_module during dccp_probe initialisation,
bail out if that call fails.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: Wang Weidong <wangweidong1@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Willy Tarreau <w@1wt.eu>
net/dccp/probe.c

index 89f25cb95603d00cd1eded7a96d36a250e8c0930..161081084844a9d9dfabd01b28e449f18cf0cc0a 100644 (file)
@@ -151,17 +151,6 @@ static const struct file_operations dccpprobe_fops = {
        .read    = dccpprobe_read,
 };
 
-static __init int setup_jprobe(void)
-{
-       int ret = register_jprobe(&dccp_send_probe);
-
-       if (ret) {
-               request_module("dccp");
-               ret = register_jprobe(&dccp_send_probe);
-       }
-       return ret;
-}
-
 static __init int dccpprobe_init(void)
 {
        int ret = -ENOMEM;
@@ -175,7 +164,13 @@ static __init int dccpprobe_init(void)
        if (!proc_net_fops_create(&init_net, procname, S_IRUSR, &dccpprobe_fops))
                goto err0;
 
-       ret = setup_jprobe();
+       ret = register_jprobe(&dccp_send_probe);
+       if (ret) {
+               ret = request_module("dccp");
+               if (!ret)
+                       ret = register_jprobe(&dccp_send_probe);
+       }
+
        if (ret)
                goto err1;