]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
rds: don't update ipaddress tables if the address hasn't changed
authorChris Mason <chris.mason@oracle.com>
Fri, 3 Feb 2012 16:07:41 +0000 (11:07 -0500)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 7 Jul 2015 23:41:28 +0000 (16:41 -0700)
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Signed-off-by: Bang Nguyen <bang.nguyen@oracle.com>
net/rds/ib_rdma.c

index 8f259604606d7287f80edf9e01565325217cecc6..60286d27690896fb3bacf8d63e01f398a4992173 100644 (file)
@@ -152,12 +152,17 @@ int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr)
        struct rds_ib_device *rds_ibdev_old;
 
        rds_ibdev_old = rds_ib_get_device(ipaddr);
-       if (rds_ibdev_old) {
+       if (!rds_ibdev_old)
+               return rds_ib_add_ipaddr(rds_ibdev, ipaddr);
+
+       if (rds_ibdev_old != rds_ibdev) {
                rds_ib_remove_ipaddr(rds_ibdev_old, ipaddr);
                rds_ib_dev_put(rds_ibdev_old);
+               return rds_ib_add_ipaddr(rds_ibdev, ipaddr);
        }
+       rds_ib_dev_put(rds_ibdev_old);
 
-       return rds_ib_add_ipaddr(rds_ibdev, ipaddr);
+       return 0;
 }
 
 void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn)