aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeon Romanovsky <leonro@mellanox.com>2018-10-11 10:30:05 -0400
committerDoug Ledford <dledford@redhat.com>2018-10-16 13:34:01 -0400
commitdbace111e5b320682eee63d7173959a2b2bd9ccb (patch)
tree5f64c5d7ea0fb522b70f30e418f5576491b57109
parent9549c2bd094f0f54b8827d64886f5b1de370dff3 (diff)
RDMA/core: Annotate timeout as unsigned long
The ucma users supply timeout in u32 format, it means that any number with most significant bit set will be converted to negative value by various rdma_*, cma_* and sa_query functions, which treat timeout as int. In the lowest level, the timeout is converted back to be unsigned long. Remove this ambiguous conversion by updating all function signatures to receive unsigned long. Reported-by: Noa Osherovich <noaos@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r--drivers/infiniband/core/addr.c2
-rw-r--r--drivers/infiniband/core/cma.c11
-rw-r--r--drivers/infiniband/core/mad.c2
-rw-r--r--drivers/infiniband/core/mad_priv.h2
-rw-r--r--drivers/infiniband/core/sa.h4
-rw-r--r--drivers/infiniband/core/sa_query.c13
-rw-r--r--include/rdma/ib_addr.h2
-rw-r--r--include/rdma/ib_cm.h2
-rw-r--r--include/rdma/ib_sa.h6
-rw-r--r--include/rdma/rdma_cm.h5
10 files changed, 26 insertions, 23 deletions
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
index b6f7cde36c2d..0dce94e3c495 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
@@ -659,7 +659,7 @@ static void process_one_req(struct work_struct *_work)
659} 659}
660 660
661int rdma_resolve_ip(struct sockaddr *src_addr, const struct sockaddr *dst_addr, 661int rdma_resolve_ip(struct sockaddr *src_addr, const struct sockaddr *dst_addr,
662 struct rdma_dev_addr *addr, int timeout_ms, 662 struct rdma_dev_addr *addr, unsigned long timeout_ms,
663 void (*callback)(int status, struct sockaddr *src_addr, 663 void (*callback)(int status, struct sockaddr *src_addr,
664 struct rdma_dev_addr *addr, void *context), 664 struct rdma_dev_addr *addr, void *context),
665 bool resolve_by_gid_attr, void *context) 665 bool resolve_by_gid_attr, void *context)
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 1156cb911a5c..15d5bb7bf6bb 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -2510,8 +2510,8 @@ static void cma_query_handler(int status, struct sa_path_rec *path_rec,
2510 queue_work(cma_wq, &work->work); 2510 queue_work(cma_wq, &work->work);
2511} 2511}
2512 2512
2513static int cma_query_ib_route(struct rdma_id_private *id_priv, int timeout_ms, 2513static int cma_query_ib_route(struct rdma_id_private *id_priv,
2514 struct cma_work *work) 2514 unsigned long timeout_ms, struct cma_work *work)
2515{ 2515{
2516 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; 2516 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
2517 struct sa_path_rec path_rec; 2517 struct sa_path_rec path_rec;
@@ -2629,7 +2629,8 @@ static void cma_init_resolve_addr_work(struct cma_work *work,
2629 work->event.event = RDMA_CM_EVENT_ADDR_RESOLVED; 2629 work->event.event = RDMA_CM_EVENT_ADDR_RESOLVED;
2630} 2630}
2631 2631
2632static int cma_resolve_ib_route(struct rdma_id_private *id_priv, int timeout_ms) 2632static int cma_resolve_ib_route(struct rdma_id_private *id_priv,
2633 unsigned long timeout_ms)
2633{ 2634{
2634 struct rdma_route *route = &id_priv->id.route; 2635 struct rdma_route *route = &id_priv->id.route;
2635 struct cma_work *work; 2636 struct cma_work *work;
@@ -2852,7 +2853,7 @@ err1:
2852 return ret; 2853 return ret;
2853} 2854}
2854 2855
2855int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms) 2856int rdma_resolve_route(struct rdma_cm_id *id, unsigned long timeout_ms)
2856{ 2857{
2857 struct rdma_id_private *id_priv; 2858 struct rdma_id_private *id_priv;
2858 int ret; 2859 int ret;
@@ -3072,7 +3073,7 @@ static int cma_bind_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
3072} 3073}
3073 3074
3074int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, 3075int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
3075 const struct sockaddr *dst_addr, int timeout_ms) 3076 const struct sockaddr *dst_addr, unsigned long timeout_ms)
3076{ 3077{
3077 struct rdma_id_private *id_priv; 3078 struct rdma_id_private *id_priv;
3078 int ret; 3079 int ret;
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index c355379e7534..d7025cd5be28 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -2414,7 +2414,7 @@ static void wait_for_response(struct ib_mad_send_wr_private *mad_send_wr)
2414} 2414}
2415 2415
2416void ib_reset_mad_timeout(struct ib_mad_send_wr_private *mad_send_wr, 2416void ib_reset_mad_timeout(struct ib_mad_send_wr_private *mad_send_wr,
2417 int timeout_ms) 2417 unsigned long timeout_ms)
2418{ 2418{
2419 mad_send_wr->timeout = msecs_to_jiffies(timeout_ms); 2419 mad_send_wr->timeout = msecs_to_jiffies(timeout_ms);
2420 wait_for_response(mad_send_wr); 2420 wait_for_response(mad_send_wr);
diff --git a/drivers/infiniband/core/mad_priv.h b/drivers/infiniband/core/mad_priv.h
index d84ae1671898..216509036aa8 100644
--- a/drivers/infiniband/core/mad_priv.h
+++ b/drivers/infiniband/core/mad_priv.h
@@ -221,6 +221,6 @@ void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr,
221void ib_mark_mad_done(struct ib_mad_send_wr_private *mad_send_wr); 221void ib_mark_mad_done(struct ib_mad_send_wr_private *mad_send_wr);
222 222
223void ib_reset_mad_timeout(struct ib_mad_send_wr_private *mad_send_wr, 223void ib_reset_mad_timeout(struct ib_mad_send_wr_private *mad_send_wr,
224 int timeout_ms); 224 unsigned long timeout_ms);
225 225
226#endif /* __IB_MAD_PRIV_H__ */ 226#endif /* __IB_MAD_PRIV_H__ */
diff --git a/drivers/infiniband/core/sa.h b/drivers/infiniband/core/sa.h
index 57d4496f6720..cbaaaa92fff3 100644
--- a/drivers/infiniband/core/sa.h
+++ b/drivers/infiniband/core/sa.h
@@ -51,8 +51,8 @@ static inline void ib_sa_client_put(struct ib_sa_client *client)
51int ib_sa_mcmember_rec_query(struct ib_sa_client *client, 51int ib_sa_mcmember_rec_query(struct ib_sa_client *client,
52 struct ib_device *device, u8 port_num, u8 method, 52 struct ib_device *device, u8 port_num, u8 method,
53 struct ib_sa_mcmember_rec *rec, 53 struct ib_sa_mcmember_rec *rec,
54 ib_sa_comp_mask comp_mask, int timeout_ms, 54 ib_sa_comp_mask comp_mask,
55 gfp_t gfp_mask, 55 unsigned long timeout_ms, gfp_t gfp_mask,
56 void (*callback)(int status, 56 void (*callback)(int status,
57 struct ib_sa_mcmember_rec *resp, 57 struct ib_sa_mcmember_rec *resp,
58 void *context), 58 void *context),
diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index f28f6fdb78cb..be5ba5e15496 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -1360,7 +1360,8 @@ static void init_mad(struct ib_sa_query *query, struct ib_mad_agent *agent)
1360 spin_unlock_irqrestore(&tid_lock, flags); 1360 spin_unlock_irqrestore(&tid_lock, flags);
1361} 1361}
1362 1362
1363static int send_mad(struct ib_sa_query *query, int timeout_ms, gfp_t gfp_mask) 1363static int send_mad(struct ib_sa_query *query, unsigned long timeout_ms,
1364 gfp_t gfp_mask)
1364{ 1365{
1365 bool preload = gfpflags_allow_blocking(gfp_mask); 1366 bool preload = gfpflags_allow_blocking(gfp_mask);
1366 unsigned long flags; 1367 unsigned long flags;
@@ -1550,7 +1551,7 @@ int ib_sa_path_rec_get(struct ib_sa_client *client,
1550 struct ib_device *device, u8 port_num, 1551 struct ib_device *device, u8 port_num,
1551 struct sa_path_rec *rec, 1552 struct sa_path_rec *rec,
1552 ib_sa_comp_mask comp_mask, 1553 ib_sa_comp_mask comp_mask,
1553 int timeout_ms, gfp_t gfp_mask, 1554 unsigned long timeout_ms, gfp_t gfp_mask,
1554 void (*callback)(int status, 1555 void (*callback)(int status,
1555 struct sa_path_rec *resp, 1556 struct sa_path_rec *resp,
1556 void *context), 1557 void *context),
@@ -1704,7 +1705,7 @@ int ib_sa_service_rec_query(struct ib_sa_client *client,
1704 struct ib_device *device, u8 port_num, u8 method, 1705 struct ib_device *device, u8 port_num, u8 method,
1705 struct ib_sa_service_rec *rec, 1706 struct ib_sa_service_rec *rec,
1706 ib_sa_comp_mask comp_mask, 1707 ib_sa_comp_mask comp_mask,
1707 int timeout_ms, gfp_t gfp_mask, 1708 unsigned long timeout_ms, gfp_t gfp_mask,
1708 void (*callback)(int status, 1709 void (*callback)(int status,
1709 struct ib_sa_service_rec *resp, 1710 struct ib_sa_service_rec *resp,
1710 void *context), 1711 void *context),
@@ -1801,7 +1802,7 @@ int ib_sa_mcmember_rec_query(struct ib_sa_client *client,
1801 u8 method, 1802 u8 method,
1802 struct ib_sa_mcmember_rec *rec, 1803 struct ib_sa_mcmember_rec *rec,
1803 ib_sa_comp_mask comp_mask, 1804 ib_sa_comp_mask comp_mask,
1804 int timeout_ms, gfp_t gfp_mask, 1805 unsigned long timeout_ms, gfp_t gfp_mask,
1805 void (*callback)(int status, 1806 void (*callback)(int status,
1806 struct ib_sa_mcmember_rec *resp, 1807 struct ib_sa_mcmember_rec *resp,
1807 void *context), 1808 void *context),
@@ -1892,7 +1893,7 @@ int ib_sa_guid_info_rec_query(struct ib_sa_client *client,
1892 struct ib_device *device, u8 port_num, 1893 struct ib_device *device, u8 port_num,
1893 struct ib_sa_guidinfo_rec *rec, 1894 struct ib_sa_guidinfo_rec *rec,
1894 ib_sa_comp_mask comp_mask, u8 method, 1895 ib_sa_comp_mask comp_mask, u8 method,
1895 int timeout_ms, gfp_t gfp_mask, 1896 unsigned long timeout_ms, gfp_t gfp_mask,
1896 void (*callback)(int status, 1897 void (*callback)(int status,
1897 struct ib_sa_guidinfo_rec *resp, 1898 struct ib_sa_guidinfo_rec *resp,
1898 void *context), 1899 void *context),
@@ -2059,7 +2060,7 @@ static void ib_sa_classport_info_rec_release(struct ib_sa_query *sa_query)
2059} 2060}
2060 2061
2061static int ib_sa_classport_info_rec_query(struct ib_sa_port *port, 2062static int ib_sa_classport_info_rec_query(struct ib_sa_port *port,
2062 int timeout_ms, 2063 unsigned long timeout_ms,
2063 void (*callback)(void *context), 2064 void (*callback)(void *context),
2064 void *context, 2065 void *context,
2065 struct ib_sa_query **sa_query) 2066 struct ib_sa_query **sa_query)
diff --git a/include/rdma/ib_addr.h b/include/rdma/ib_addr.h
index eebbe63b530c..2734c895c1bf 100644
--- a/include/rdma/ib_addr.h
+++ b/include/rdma/ib_addr.h
@@ -99,7 +99,7 @@ int rdma_translate_ip(const struct sockaddr *addr,
99 * @context: User-specified context associated with the call. 99 * @context: User-specified context associated with the call.
100 */ 100 */
101int rdma_resolve_ip(struct sockaddr *src_addr, const struct sockaddr *dst_addr, 101int rdma_resolve_ip(struct sockaddr *src_addr, const struct sockaddr *dst_addr,
102 struct rdma_dev_addr *addr, int timeout_ms, 102 struct rdma_dev_addr *addr, unsigned long timeout_ms,
103 void (*callback)(int status, struct sockaddr *src_addr, 103 void (*callback)(int status, struct sockaddr *src_addr,
104 struct rdma_dev_addr *addr, void *context), 104 struct rdma_dev_addr *addr, void *context),
105 bool resolve_by_gid_attr, void *context); 105 bool resolve_by_gid_attr, void *context);
diff --git a/include/rdma/ib_cm.h b/include/rdma/ib_cm.h
index c10f4b5ea8ab..49f4f75499b3 100644
--- a/include/rdma/ib_cm.h
+++ b/include/rdma/ib_cm.h
@@ -583,7 +583,7 @@ struct ib_cm_sidr_req_param {
583 struct sa_path_rec *path; 583 struct sa_path_rec *path;
584 const struct ib_gid_attr *sgid_attr; 584 const struct ib_gid_attr *sgid_attr;
585 __be64 service_id; 585 __be64 service_id;
586 int timeout_ms; 586 unsigned long timeout_ms;
587 const void *private_data; 587 const void *private_data;
588 u8 private_data_len; 588 u8 private_data_len;
589 u8 max_cm_retries; 589 u8 max_cm_retries;
diff --git a/include/rdma/ib_sa.h b/include/rdma/ib_sa.h
index 95ce625a49e3..19520979b84c 100644
--- a/include/rdma/ib_sa.h
+++ b/include/rdma/ib_sa.h
@@ -451,7 +451,7 @@ void ib_sa_cancel_query(int id, struct ib_sa_query *query);
451 451
452int ib_sa_path_rec_get(struct ib_sa_client *client, struct ib_device *device, 452int ib_sa_path_rec_get(struct ib_sa_client *client, struct ib_device *device,
453 u8 port_num, struct sa_path_rec *rec, 453 u8 port_num, struct sa_path_rec *rec,
454 ib_sa_comp_mask comp_mask, int timeout_ms, 454 ib_sa_comp_mask comp_mask, unsigned long timeout_ms,
455 gfp_t gfp_mask, 455 gfp_t gfp_mask,
456 void (*callback)(int status, struct sa_path_rec *resp, 456 void (*callback)(int status, struct sa_path_rec *resp,
457 void *context), 457 void *context),
@@ -460,7 +460,7 @@ int ib_sa_path_rec_get(struct ib_sa_client *client, struct ib_device *device,
460int ib_sa_service_rec_query(struct ib_sa_client *client, 460int ib_sa_service_rec_query(struct ib_sa_client *client,
461 struct ib_device *device, u8 port_num, u8 method, 461 struct ib_device *device, u8 port_num, u8 method,
462 struct ib_sa_service_rec *rec, 462 struct ib_sa_service_rec *rec,
463 ib_sa_comp_mask comp_mask, int timeout_ms, 463 ib_sa_comp_mask comp_mask, unsigned long timeout_ms,
464 gfp_t gfp_mask, 464 gfp_t gfp_mask,
465 void (*callback)(int status, 465 void (*callback)(int status,
466 struct ib_sa_service_rec *resp, 466 struct ib_sa_service_rec *resp,
@@ -568,7 +568,7 @@ int ib_sa_guid_info_rec_query(struct ib_sa_client *client,
568 struct ib_device *device, u8 port_num, 568 struct ib_device *device, u8 port_num,
569 struct ib_sa_guidinfo_rec *rec, 569 struct ib_sa_guidinfo_rec *rec,
570 ib_sa_comp_mask comp_mask, u8 method, 570 ib_sa_comp_mask comp_mask, u8 method,
571 int timeout_ms, gfp_t gfp_mask, 571 unsigned long timeout_ms, gfp_t gfp_mask,
572 void (*callback)(int status, 572 void (*callback)(int status,
573 struct ib_sa_guidinfo_rec *resp, 573 struct ib_sa_guidinfo_rec *resp,
574 void *context), 574 void *context),
diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h
index 53d93c7d8e01..60987a5903b7 100644
--- a/include/rdma/rdma_cm.h
+++ b/include/rdma/rdma_cm.h
@@ -196,7 +196,8 @@ int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr);
196 * @timeout_ms: Time to wait for resolution to complete. 196 * @timeout_ms: Time to wait for resolution to complete.
197 */ 197 */
198int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, 198int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
199 const struct sockaddr *dst_addr, int timeout_ms); 199 const struct sockaddr *dst_addr,
200 unsigned long timeout_ms);
200 201
201/** 202/**
202 * rdma_resolve_route - Resolve the RDMA address bound to the RDMA identifier 203 * rdma_resolve_route - Resolve the RDMA address bound to the RDMA identifier
@@ -206,7 +207,7 @@ int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
206 * Users must have first called rdma_resolve_addr to resolve a dst_addr 207 * Users must have first called rdma_resolve_addr to resolve a dst_addr
207 * into an RDMA address before calling this routine. 208 * into an RDMA address before calling this routine.
208 */ 209 */
209int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms); 210int rdma_resolve_route(struct rdma_cm_id *id, unsigned long timeout_ms);
210 211
211/** 212/**
212 * rdma_create_qp - Allocate a QP and associate it with the specified RDMA 213 * rdma_create_qp - Allocate a QP and associate it with the specified RDMA