diff options
author | Yuval Shaia <yuval.shaia@oracle.com> | 2017-01-25 18:41:37 +0200 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2017-10-12 15:28:00 +0100 |
commit | 9dfc4a5a483dc9e7473d28a3b2b475f4cc3e6985 (patch) | |
tree | fef42c359ed4aa33bb0bd0ffb334d4c431338d31 | |
parent | ad84b0f7ee017b5eb0819f79bf00e47b4290ce32 (diff) | |
download | linux-stable-9dfc4a5a483dc9e7473d28a3b2b475f4cc3e6985.tar.gz linux-stable-9dfc4a5a483dc9e7473d28a3b2b475f4cc3e6985.tar.bz2 linux-stable-9dfc4a5a483dc9e7473d28a3b2b475f4cc3e6985.zip |
IB/core: Add inline function to validate port
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.16:
- Drop inapplicable changes
- Adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r-- | drivers/infiniband/core/cache.c | 10 | ||||
-rw-r--r-- | drivers/infiniband/core/device.c | 4 | ||||
-rw-r--r-- | include/rdma/ib_verbs.h | 7 |
3 files changed, 14 insertions, 7 deletions
diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c index 08921b34182c..896e5e6b0a02 100644 --- a/drivers/infiniband/core/cache.c +++ b/drivers/infiniband/core/cache.c @@ -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); @@ -158,7 +158,7 @@ int ib_find_cached_pkey(struct ib_device *device, int ret = -ENOENT; int partial_ix = -1; - 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); @@ -198,7 +198,7 @@ int ib_find_exact_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); @@ -227,7 +227,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); diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c index fc6454ce7917..1d07df37178f 100644 --- a/drivers/infiniband/core/device.c +++ b/drivers/infiniband/core/device.c @@ -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, diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 69cd66432b2a..7367f8c9aeeb 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -1721,6 +1721,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); |