rocker: call correct unregister function on error
[firefly-linux-kernel-4.4.55.git] / drivers / net / ethernet / rocker / rocker.c
index ec251531bd9f8ecd1e64295b4f1f5c35fe475b79..3479573a6d784d863b3895dc0875297b6e9354dc 100644 (file)
@@ -2921,10 +2921,11 @@ static int rocker_port_ipv4_resolve(struct rocker_port *rocker_port,
        struct neighbour *n = __ipv4_neigh_lookup(dev, (__force u32)ip_addr);
        int err = 0;
 
-       if (!n)
+       if (!n) {
                n = neigh_create(&arp_tbl, &ip_addr, dev);
-       if (!n)
-               return -ENOMEM;
+               if (IS_ERR(n))
+                       return IS_ERR(n);
+       }
 
        /* If the neigh is already resolved, then go ahead and
         * install the entry, otherwise start the ARP process to
@@ -2936,6 +2937,7 @@ static int rocker_port_ipv4_resolve(struct rocker_port *rocker_port,
        else
                neigh_event_send(n, NULL);
 
+       neigh_release(n);
        return err;
 }
 
@@ -5038,7 +5040,7 @@ static int __init rocker_module_init(void)
        return 0;
 
 err_pci_register_driver:
-       unregister_netdevice_notifier(&rocker_netevent_nb);
+       unregister_netevent_notifier(&rocker_netevent_nb);
        unregister_netdevice_notifier(&rocker_netdevice_nb);
        return err;
 }