RDMA/usnic: Fix remove address space warning
authorLeon Romanovsky <leonro@mellanox.com>
Thu, 17 Aug 2017 12:50:41 +0000 (15:50 +0300)
committerDoug Ledford <dledford@redhat.com>
Thu, 24 Aug 2017 20:27:10 +0000 (16:27 -0400)
Sparse tool complains with the following error:
drivers/infiniband/hw/usnic/usnic_ib_main.c:445:16: warning: cast removes
address space of expression

Fix it by doing casting on correct field and convert function helper which
sets ifaddr to be void, because there are no users who are interested in
returned value.

Fixes: c7845bcafe4d ("IB/usnic: Add UDP support in u*verbs.c, u*main.c and u*util.h")
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/usnic/usnic_fwd.c
drivers/infiniband/hw/usnic/usnic_fwd.h
drivers/infiniband/hw/usnic/usnic_ib_main.c

index 3c37dd59c04eaec750e5ddbf98383e8e4b64d669..995a26b65156bd18bfd3180847e0c8c9d15499d9 100644 (file)
@@ -110,20 +110,12 @@ void usnic_fwd_set_mac(struct usnic_fwd_dev *ufdev, char mac[ETH_ALEN])
        spin_unlock(&ufdev->lock);
 }
 
-int usnic_fwd_add_ipaddr(struct usnic_fwd_dev *ufdev, __be32 inaddr)
+void usnic_fwd_add_ipaddr(struct usnic_fwd_dev *ufdev, __be32 inaddr)
 {
-       int status;
-
        spin_lock(&ufdev->lock);
-       if (ufdev->inaddr == 0) {
+       if (!ufdev->inaddr)
                ufdev->inaddr = inaddr;
-               status = 0;
-       } else {
-               status = -EFAULT;
-       }
        spin_unlock(&ufdev->lock);
-
-       return status;
 }
 
 void usnic_fwd_del_ipaddr(struct usnic_fwd_dev *ufdev)
index b2ac22be073179d26b818cbb33389f91b3ed7dc0..0b2cc4e7970750d4e9fbfcbad6a26a307d3a1c0e 100644 (file)
@@ -75,7 +75,7 @@ struct usnic_fwd_dev *usnic_fwd_dev_alloc(struct pci_dev *pdev);
 void usnic_fwd_dev_free(struct usnic_fwd_dev *ufdev);
 
 void usnic_fwd_set_mac(struct usnic_fwd_dev *ufdev, char mac[ETH_ALEN]);
-int usnic_fwd_add_ipaddr(struct usnic_fwd_dev *ufdev, __be32 inaddr);
+void usnic_fwd_add_ipaddr(struct usnic_fwd_dev *ufdev, __be32 inaddr);
 void usnic_fwd_del_ipaddr(struct usnic_fwd_dev *ufdev);
 void usnic_fwd_carrier_up(struct usnic_fwd_dev *ufdev);
 void usnic_fwd_carrier_down(struct usnic_fwd_dev *ufdev);
index e86700f994cb335dbe2a60a14335a3f753557338..f45e99a938e099805e4c1fd253506af99020df52 100644 (file)
@@ -351,7 +351,7 @@ static void *usnic_ib_device_add(struct pci_dev *dev)
 {
        struct usnic_ib_dev *us_ibdev;
        union ib_gid gid;
-       struct in_ifaddr *in;
+       struct in_device *ind;
        struct net_device *netdev;
 
        usnic_dbg("\n");
@@ -441,9 +441,11 @@ static void *usnic_ib_device_add(struct pci_dev *dev)
        if (netif_carrier_ok(us_ibdev->netdev))
                usnic_fwd_carrier_up(us_ibdev->ufdev);
 
-       in = ((struct in_device *)(netdev->ip_ptr))->ifa_list;
-       if (in != NULL)
-               usnic_fwd_add_ipaddr(us_ibdev->ufdev, in->ifa_address);
+       ind = in_dev_get(netdev);
+       if (ind->ifa_list)
+               usnic_fwd_add_ipaddr(us_ibdev->ufdev,
+                                    ind->ifa_list->ifa_address);
+       in_dev_put(ind);
 
        usnic_mac_ip_to_gid(us_ibdev->netdev->perm_addr,
                                us_ibdev->ufdev->inaddr, &gid.raw[0]);