netlink: fix for too early rmmod
[firefly-linux-kernel-4.4.55.git] / net / netlink / af_netlink.c
index a4957bf2ca60d6963e2d94f9b2e7679df3a0b4b6..4c5972ba8c78c00bb35519cae8e927ae84e8a1d0 100644 (file)
@@ -455,9 +455,14 @@ static int netlink_create(struct net *net, struct socket *sock, int protocol,
        if (nl_table[protocol].registered &&
            try_module_get(nl_table[protocol].module))
                module = nl_table[protocol].module;
+       else
+               err = -EPROTONOSUPPORT;
        cb_mutex = nl_table[protocol].cb_mutex;
        netlink_unlock_table();
 
+       if (err < 0)
+               goto out;
+
        err = __netlink_create(net, sock, cb_mutex, protocol);
        if (err < 0)
                goto out_module;