]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/core: Annotate timeout as unsigned long
authorLeon Romanovsky <leonro@mellanox.com>
Thu, 11 Oct 2018 14:30:05 +0000 (17:30 +0300)
committerDoug Ledford <dledford@redhat.com>
Tue, 16 Oct 2018 17:34:01 +0000 (13:34 -0400)
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>
drivers/infiniband/core/addr.c
drivers/infiniband/core/cma.c
drivers/infiniband/core/mad.c
drivers/infiniband/core/mad_priv.h
drivers/infiniband/core/sa.h
drivers/infiniband/core/sa_query.c
include/rdma/ib_addr.h
include/rdma/ib_cm.h
include/rdma/ib_sa.h
include/rdma/rdma_cm.h

index b6f7cde36c2d65ca572f6ac93285b367faabbc75..0dce94e3c495619e1d825e9f0ee300da8ea2e779 100644 (file)
@@ -659,7 +659,7 @@ static void process_one_req(struct work_struct *_work)
 }
 
 int rdma_resolve_ip(struct sockaddr *src_addr, const struct sockaddr *dst_addr,
-                   struct rdma_dev_addr *addr, int timeout_ms,
+                   struct rdma_dev_addr *addr, unsigned long timeout_ms,
                    void (*callback)(int status, struct sockaddr *src_addr,
                                     struct rdma_dev_addr *addr, void *context),
                    bool resolve_by_gid_attr, void *context)
index 1156cb911a5cd4193111540c7c486e0fdd696533..15d5bb7bf6bb8b05678de8717f629d4aa99e48df 100644 (file)
@@ -2510,8 +2510,8 @@ static void cma_query_handler(int status, struct sa_path_rec *path_rec,
        queue_work(cma_wq, &work->work);
 }
 
-static int cma_query_ib_route(struct rdma_id_private *id_priv, int timeout_ms,
-                             struct cma_work *work)
+static int cma_query_ib_route(struct rdma_id_private *id_priv,
+                             unsigned long timeout_ms, struct cma_work *work)
 {
        struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
        struct sa_path_rec path_rec;
@@ -2629,7 +2629,8 @@ static void cma_init_resolve_addr_work(struct cma_work *work,
        work->event.event = RDMA_CM_EVENT_ADDR_RESOLVED;
 }
 
-static int cma_resolve_ib_route(struct rdma_id_private *id_priv, int timeout_ms)
+static int cma_resolve_ib_route(struct rdma_id_private *id_priv,
+                               unsigned long timeout_ms)
 {
        struct rdma_route *route = &id_priv->id.route;
        struct cma_work *work;
@@ -2852,7 +2853,7 @@ err1:
        return ret;
 }
 
-int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms)
+int rdma_resolve_route(struct rdma_cm_id *id, unsigned long timeout_ms)
 {
        struct rdma_id_private *id_priv;
        int ret;
@@ -3072,7 +3073,7 @@ static int cma_bind_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
 }
 
 int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
-                     const struct sockaddr *dst_addr, int timeout_ms)
+                     const struct sockaddr *dst_addr, unsigned long timeout_ms)
 {
        struct rdma_id_private *id_priv;
        int ret;
index c355379e753480e10220344dcd5c7fc40c1914d8..d7025cd5be28a0b06b2f0c6c7fe1fbcca0cdab1e 100644 (file)
@@ -2414,7 +2414,7 @@ static void wait_for_response(struct ib_mad_send_wr_private *mad_send_wr)
 }
 
 void ib_reset_mad_timeout(struct ib_mad_send_wr_private *mad_send_wr,
-                         int timeout_ms)
+                         unsigned long timeout_ms)
 {
        mad_send_wr->timeout = msecs_to_jiffies(timeout_ms);
        wait_for_response(mad_send_wr);
index d84ae167189824edcb1134cb7607e1481ef5b858..216509036aa8c4e52da52b56fa736b531ebe3f4f 100644 (file)
@@ -221,6 +221,6 @@ void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr,
 void ib_mark_mad_done(struct ib_mad_send_wr_private *mad_send_wr);
 
 void ib_reset_mad_timeout(struct ib_mad_send_wr_private *mad_send_wr,
-                         int timeout_ms);
+                         unsigned long timeout_ms);
 
 #endif /* __IB_MAD_PRIV_H__ */
index 57d4496f672002f76728fd24360e136bcd49ef98..cbaaaa92fff384eddf04ea2d05a0eca76ede688f 100644 (file)
@@ -51,8 +51,8 @@ static inline void ib_sa_client_put(struct ib_sa_client *client)
 int ib_sa_mcmember_rec_query(struct ib_sa_client *client,
                             struct ib_device *device, u8 port_num, u8 method,
                             struct ib_sa_mcmember_rec *rec,
-                            ib_sa_comp_mask comp_mask, int timeout_ms,
-                            gfp_t gfp_mask,
+                            ib_sa_comp_mask comp_mask,
+                            unsigned long timeout_ms, gfp_t gfp_mask,
                             void (*callback)(int status,
                                              struct ib_sa_mcmember_rec *resp,
                                              void *context),
index f28f6fdb78cb210268a903d1ad99d70acc8a0216..be5ba5e15496cdd7aa95a5e6f111b4444f5a3dec 100644 (file)
@@ -1360,7 +1360,8 @@ static void init_mad(struct ib_sa_query *query, struct ib_mad_agent *agent)
        spin_unlock_irqrestore(&tid_lock, flags);
 }
 
-static int send_mad(struct ib_sa_query *query, int timeout_ms, gfp_t gfp_mask)
+static int send_mad(struct ib_sa_query *query, unsigned long timeout_ms,
+                   gfp_t gfp_mask)
 {
        bool preload = gfpflags_allow_blocking(gfp_mask);
        unsigned long flags;
@@ -1550,7 +1551,7 @@ int ib_sa_path_rec_get(struct ib_sa_client *client,
                       struct ib_device *device, u8 port_num,
                       struct sa_path_rec *rec,
                       ib_sa_comp_mask comp_mask,
-                      int timeout_ms, gfp_t gfp_mask,
+                      unsigned long timeout_ms, gfp_t gfp_mask,
                       void (*callback)(int status,
                                        struct sa_path_rec *resp,
                                        void *context),
@@ -1704,7 +1705,7 @@ int ib_sa_service_rec_query(struct ib_sa_client *client,
                            struct ib_device *device, u8 port_num, u8 method,
                            struct ib_sa_service_rec *rec,
                            ib_sa_comp_mask comp_mask,
-                           int timeout_ms, gfp_t gfp_mask,
+                           unsigned long timeout_ms, gfp_t gfp_mask,
                            void (*callback)(int status,
                                             struct ib_sa_service_rec *resp,
                                             void *context),
@@ -1801,7 +1802,7 @@ int ib_sa_mcmember_rec_query(struct ib_sa_client *client,
                             u8 method,
                             struct ib_sa_mcmember_rec *rec,
                             ib_sa_comp_mask comp_mask,
-                            int timeout_ms, gfp_t gfp_mask,
+                            unsigned long timeout_ms, gfp_t gfp_mask,
                             void (*callback)(int status,
                                              struct ib_sa_mcmember_rec *resp,
                                              void *context),
@@ -1892,7 +1893,7 @@ int ib_sa_guid_info_rec_query(struct ib_sa_client *client,
                              struct ib_device *device, u8 port_num,
                              struct ib_sa_guidinfo_rec *rec,
                              ib_sa_comp_mask comp_mask, u8 method,
-                             int timeout_ms, gfp_t gfp_mask,
+                             unsigned long timeout_ms, gfp_t gfp_mask,
                              void (*callback)(int status,
                                               struct ib_sa_guidinfo_rec *resp,
                                               void *context),
@@ -2059,7 +2060,7 @@ static void ib_sa_classport_info_rec_release(struct ib_sa_query *sa_query)
 }
 
 static int ib_sa_classport_info_rec_query(struct ib_sa_port *port,
-                                         int timeout_ms,
+                                         unsigned long timeout_ms,
                                          void (*callback)(void *context),
                                          void *context,
                                          struct ib_sa_query **sa_query)
index eebbe63b530c620d53533422d3232762bcae40f7..2734c895c1bf465ec7f1869511c341b0c4b215a5 100644 (file)
@@ -99,7 +99,7 @@ int rdma_translate_ip(const struct sockaddr *addr,
  * @context: User-specified context associated with the call.
  */
 int rdma_resolve_ip(struct sockaddr *src_addr, const struct sockaddr *dst_addr,
-                   struct rdma_dev_addr *addr, int timeout_ms,
+                   struct rdma_dev_addr *addr, unsigned long timeout_ms,
                    void (*callback)(int status, struct sockaddr *src_addr,
                                     struct rdma_dev_addr *addr, void *context),
                    bool resolve_by_gid_attr, void *context);
index c10f4b5ea8ab5298beaba7070f588408532d9f61..49f4f75499b3eb46487b1c93b9fc7f23abcc18df 100644 (file)
@@ -583,7 +583,7 @@ struct ib_cm_sidr_req_param {
        struct sa_path_rec      *path;
        const struct ib_gid_attr *sgid_attr;
        __be64                  service_id;
-       int                     timeout_ms;
+       unsigned long           timeout_ms;
        const void              *private_data;
        u8                      private_data_len;
        u8                      max_cm_retries;
index 95ce625a49e358505d20f6e701fdc8076c3c380a..19520979b84c21fffcff25865fe4c7f002604a80 100644 (file)
@@ -451,7 +451,7 @@ void ib_sa_cancel_query(int id, struct ib_sa_query *query);
 
 int ib_sa_path_rec_get(struct ib_sa_client *client, struct ib_device *device,
                       u8 port_num, struct sa_path_rec *rec,
-                      ib_sa_comp_mask comp_mask, int timeout_ms,
+                      ib_sa_comp_mask comp_mask, unsigned long timeout_ms,
                       gfp_t gfp_mask,
                       void (*callback)(int status, struct sa_path_rec *resp,
                                        void *context),
@@ -460,7 +460,7 @@ int ib_sa_path_rec_get(struct ib_sa_client *client, struct ib_device *device,
 int ib_sa_service_rec_query(struct ib_sa_client *client,
                            struct ib_device *device, u8 port_num, u8 method,
                            struct ib_sa_service_rec *rec,
-                           ib_sa_comp_mask comp_mask, int timeout_ms,
+                           ib_sa_comp_mask comp_mask, unsigned long timeout_ms,
                            gfp_t gfp_mask,
                            void (*callback)(int status,
                                             struct ib_sa_service_rec *resp,
@@ -568,7 +568,7 @@ int ib_sa_guid_info_rec_query(struct ib_sa_client *client,
                              struct ib_device *device, u8 port_num,
                              struct ib_sa_guidinfo_rec *rec,
                              ib_sa_comp_mask comp_mask, u8 method,
-                             int timeout_ms, gfp_t gfp_mask,
+                             unsigned long timeout_ms, gfp_t gfp_mask,
                              void (*callback)(int status,
                                               struct ib_sa_guidinfo_rec *resp,
                                               void *context),
index 53d93c7d8e0148db988ba6fd09045ec5efeb364c..60987a5903b786323306b8ee02bd2bb9e040e83f 100644 (file)
@@ -196,7 +196,8 @@ int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr);
  * @timeout_ms: Time to wait for resolution to complete.
  */
 int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
-                     const struct sockaddr *dst_addr, int timeout_ms);
+                     const struct sockaddr *dst_addr,
+                     unsigned long timeout_ms);
 
 /**
  * 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,
  * Users must have first called rdma_resolve_addr to resolve a dst_addr
  * into an RDMA address before calling this routine.
  */
-int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms);
+int rdma_resolve_route(struct rdma_cm_id *id, unsigned long timeout_ms);
 
 /**
  * rdma_create_qp - Allocate a QP and associate it with the specified RDMA