]> Pileus Git - ~andy/linux/commitdiff
cxgbi: Convert over to dst_neigh_lookup().
authorDavid S. Miller <davem@davemloft.net>
Tue, 3 Jul 2012 05:08:58 +0000 (22:08 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 5 Jul 2012 08:09:53 +0000 (01:09 -0700)
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/scsi/cxgbi/libcxgbi.c

index d9253db1d0e2c68b41ce7f4012b4b1644d968938..b44c1cff3114bb9a6aa6467540a3755d722ef5b3 100644 (file)
@@ -494,7 +494,7 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
                goto err_out;
        }
        dst = &rt->dst;
-       n = dst_get_neighbour_noref(dst);
+       n = dst_neigh_lookup(dst, &daddr->sin_addr.s_addr);
        if (!n) {
                err = -ENODEV;
                goto rel_rt;
@@ -506,7 +506,7 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
                        &daddr->sin_addr.s_addr, ntohs(daddr->sin_port),
                        ndev->name);
                err = -ENETUNREACH;
-               goto rel_rt;
+               goto rel_neigh;
        }
 
        if (ndev->flags & IFF_LOOPBACK) {
@@ -521,7 +521,7 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
                pr_info("dst %pI4, %s, NOT cxgbi device.\n",
                        &daddr->sin_addr.s_addr, ndev->name);
                err = -ENETUNREACH;
-               goto rel_rt;
+               goto rel_neigh;
        }
        log_debug(1 << CXGBI_DBG_SOCK,
                "route to %pI4 :%u, ndev p#%d,%s, cdev 0x%p.\n",
@@ -531,7 +531,7 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
        csk = cxgbi_sock_create(cdev);
        if (!csk) {
                err = -ENOMEM;
-               goto rel_rt;
+               goto rel_neigh;
        }
        csk->cdev = cdev;
        csk->port_id = port;
@@ -541,9 +541,13 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
        csk->daddr.sin_port = daddr->sin_port;
        csk->daddr.sin_family = daddr->sin_family;
        csk->saddr.sin_addr.s_addr = fl4.saddr;
+       neigh_release(n);
 
        return csk;
 
+rel_neigh:
+       neigh_release(n);
+
 rel_rt:
        ip_rt_put(rt);
        if (csk)