From: Chris Mason Date: Fri, 3 Feb 2012 16:07:41 +0000 (-0500) Subject: rds: don't update ipaddress tables if the address hasn't changed X-Git-Tag: v4.1.12-92~319^2^2~2^2~56 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=2bf86a80c714476ab09e5106fcbd0abb6774ee16;p=users%2Fjedix%2Flinux-maple.git rds: don't update ipaddress tables if the address hasn't changed Signed-off-by: Chris Mason Signed-off-by: Bang Nguyen --- diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c index 8f259604606d..60286d276908 100644 --- a/net/rds/ib_rdma.c +++ b/net/rds/ib_rdma.c @@ -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)