IB/cxgb4: Fix if statement in pick_local_ip6adddrs
authorNicholas Krause <xerofoify@gmail.com>
Thu, 27 Aug 2015 03:00:59 +0000 (23:00 -0400)
committerDoug Ledford <dledford@redhat.com>
Thu, 3 Sep 2015 18:03:59 +0000 (14:03 -0400)
This fixes an if statement checking the return value of the function
get_lladdr for success in the function pick_local_ip6addrs to instead
of directly checking the return value of this call check the opposite
as get_lladdr returns zero for success which would incorrectly make
this if statement block not execute with the current if statement
check.

Signed-off-by: Nicholas Krause <xerofoify@gmail.com>
Acked-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/cxgb4/cm.c

index f0c1512c45cdb899b04006f61816d334d6aaa3b0..debc39d2cbc2a61d66901dd20ef531703717ed29 100644 (file)
@@ -3031,7 +3031,7 @@ static int pick_local_ip6addrs(struct c4iw_dev *dev, struct iw_cm_id *cm_id)
        struct sockaddr_in6 *la6 = (struct sockaddr_in6 *)&cm_id->local_addr;
        struct sockaddr_in6 *ra6 = (struct sockaddr_in6 *)&cm_id->remote_addr;
 
-       if (get_lladdr(dev->rdev.lldi.ports[0], &addr, IFA_F_TENTATIVE)) {
+       if (!get_lladdr(dev->rdev.lldi.ports[0], &addr, IFA_F_TENTATIVE)) {
                memcpy(la6->sin6_addr.s6_addr, &addr, 16);
                memcpy(ra6->sin6_addr.s6_addr, &addr, 16);
                return 0;