IB/core: Add inline function to validate port
authorYuval Shaia <yuval.shaia@oracle.com>
Wed, 25 Jan 2017 16:41:37 +0000 (18:41 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 12 Oct 2017 14:27:14 +0000 (15:27 +0100)
commit 24dc831b77eca9361cf835be59fa69ea0e471afc upstream.

Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
[bwh: Backported to 3.2:
 - Drop inapplicable changes
 - Adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/infiniband/core/cache.c
drivers/infiniband/core/device.c
include/rdma/ib_verbs.h

index 0fa1f81..29478d2 100644 (file)
@@ -67,7 +67,7 @@ int ib_get_cached_gid(struct ib_device *device,
        unsigned long flags;
        int ret = 0;
 
-       if (port_num < rdma_start_port(device) || port_num > rdma_end_port(device))
+       if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
        read_lock_irqsave(&device->cache.lock, flags);
@@ -129,7 +129,7 @@ int ib_get_cached_pkey(struct ib_device *device,
        unsigned long flags;
        int ret = 0;
 
-       if (port_num < rdma_start_port(device) || port_num > rdma_end_port(device))
+       if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
        read_lock_irqsave(&device->cache.lock, flags);
@@ -157,7 +157,7 @@ int ib_find_cached_pkey(struct ib_device *device,
        int i;
        int ret = -ENOENT;
 
-       if (port_num < rdma_start_port(device) || port_num > rdma_end_port(device))
+       if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
        read_lock_irqsave(&device->cache.lock, flags);
@@ -186,7 +186,7 @@ int ib_get_cached_lmc(struct ib_device *device,
        unsigned long flags;
        int ret = 0;
 
-       if (port_num < rdma_start_port(device) || port_num > rdma_end_port(device))
+       if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
        read_lock_irqsave(&device->cache.lock, flags);
index 06a8121..df844af 100644 (file)
@@ -563,7 +563,7 @@ int ib_query_port(struct ib_device *device,
                  u8 port_num,
                  struct ib_port_attr *port_attr)
 {
-       if (port_num < rdma_start_port(device) || port_num > rdma_end_port(device))
+       if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
        return device->query_port(device, port_num, port_attr);
@@ -641,7 +641,7 @@ int ib_modify_port(struct ib_device *device,
        if (!device->modify_port)
                return -ENOSYS;
 
-       if (port_num < rdma_start_port(device) || port_num > rdma_end_port(device))
+       if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
        return device->modify_port(device, port_num, port_modify_mask,
index b8873d2..a6bb7eb 100644 (file)
@@ -1335,6 +1335,13 @@ static inline u8 rdma_end_port(const struct ib_device *device)
                0 : device->phys_port_cnt;
 }
 
+static inline int rdma_is_port_valid(const struct ib_device *device,
+                                    unsigned int port)
+{
+       return (port >= rdma_start_port(device) &&
+               port <= rdma_end_port(device));
+}
+
 int ib_query_gid(struct ib_device *device,
                 u8 port_num, int index, union ib_gid *gid);