net: bpfilter: fallback to netfilter if failed to load bpfilter kernel module
authorKonstantin Khlebnikov <khlebnikov@yandex-team.ru>
Wed, 15 May 2019 11:40:52 +0000 (14:40 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 16 May 2019 19:12:40 +0000 (12:12 -0700)
If bpfilter is not available return ENOPROTOOPT to fallback to netfilter.

Function request_module() returns both errors and userspace exit codes.
Just ignore them. Rechecking bpfilter_ops is enough.

Fixes: d2ba09c17a06 ("net: add skeleton of bpfilter kernel module")
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/bpfilter/sockopt.c

index 15427163a041d4dc9d4f7e35ee4d207fd6e5ba2a..0480918bfc7cff88c9cd2500a9474ed2a9ccb10c 100644 (file)
@@ -30,13 +30,11 @@ static int bpfilter_mbox_request(struct sock *sk, int optname,
        mutex_lock(&bpfilter_ops.lock);
        if (!bpfilter_ops.sockopt) {
                mutex_unlock(&bpfilter_ops.lock);
-               err = request_module("bpfilter");
+               request_module("bpfilter");
                mutex_lock(&bpfilter_ops.lock);
 
-               if (err)
-                       goto out;
                if (!bpfilter_ops.sockopt) {
-                       err = -ECHILD;
+                       err = -ENOPROTOOPT;
                        goto out;
                }
        }