IB/rxe: Let the compiler check the type of the cleanup functions
authorBart Van Assche <bart.vanassche@sandisk.com>
Tue, 10 Jan 2017 19:15:46 +0000 (11:15 -0800)
committerDoug Ledford <dledford@redhat.com>
Tue, 10 Jan 2017 21:52:47 +0000 (16:52 -0500)
Change the argument type of these functions from void * into
struct rxe_pool_entry *.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Andrew Boyer <andrew.boyer@dell.com>
Cc: Moni Shoua <monis@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/sw/rxe/rxe_cq.c
drivers/infiniband/sw/rxe/rxe_loc.h
drivers/infiniband/sw/rxe/rxe_mcast.c
drivers/infiniband/sw/rxe/rxe_mr.c
drivers/infiniband/sw/rxe/rxe_pool.h
drivers/infiniband/sw/rxe/rxe_qp.c
drivers/infiniband/sw/rxe/rxe_verbs.h

index e5e6a5e7dee9c36d90ab98b0720df276ab38fa68..49fe42c23f4dd6348857352be7f4694168b82b5e 100644 (file)
@@ -156,9 +156,9 @@ int rxe_cq_post(struct rxe_cq *cq, struct rxe_cqe *cqe, int solicited)
        return 0;
 }
 
-void rxe_cq_cleanup(void *arg)
+void rxe_cq_cleanup(struct rxe_pool_entry *arg)
 {
-       struct rxe_cq *cq = arg;
+       struct rxe_cq *cq = container_of(arg, typeof(*cq), pelem);
 
        if (cq->queue)
                rxe_queue_cleanup(cq->queue);
index efe4c6a354424a5323261eb07135cf7b998e1679..da191d7acb6fc3dbd556bbc12f842ee0564b8dd8 100644 (file)
@@ -64,7 +64,7 @@ int rxe_cq_resize_queue(struct rxe_cq *cq, int new_cqe, struct ib_udata *udata);
 
 int rxe_cq_post(struct rxe_cq *cq, struct rxe_cqe *cqe, int solicited);
 
-void rxe_cq_cleanup(void *arg);
+void rxe_cq_cleanup(struct rxe_pool_entry *arg);
 
 /* rxe_mcast.c */
 int rxe_mcast_get_grp(struct rxe_dev *rxe, union ib_gid *mgid,
@@ -78,7 +78,7 @@ int rxe_mcast_drop_grp_elem(struct rxe_dev *rxe, struct rxe_qp *qp,
 
 void rxe_drop_all_mcast_groups(struct rxe_qp *qp);
 
-void rxe_mc_cleanup(void *arg);
+void rxe_mc_cleanup(struct rxe_pool_entry *arg);
 
 /* rxe_mmap.c */
 struct rxe_mmap_info {
@@ -137,7 +137,7 @@ int mem_check_range(struct rxe_mem *mem, u64 iova, size_t length);
 int rxe_mem_map_pages(struct rxe_dev *rxe, struct rxe_mem *mem,
                      u64 *page, int num_pages, u64 iova);
 
-void rxe_mem_cleanup(void *arg);
+void rxe_mem_cleanup(struct rxe_pool_entry *arg);
 
 int advance_dma_data(struct rxe_dma_info *dma, unsigned int length);
 
@@ -162,7 +162,7 @@ void rxe_qp_error(struct rxe_qp *qp);
 
 void rxe_qp_destroy(struct rxe_qp *qp);
 
-void rxe_qp_cleanup(void *arg);
+void rxe_qp_cleanup(struct rxe_pool_entry *arg);
 
 static inline int qp_num(struct rxe_qp *qp)
 {
index fa95544ca7e01881bf0999ac7b825a795c4a7c17..e0fb6752f90e045fa25a82eb053b28eca3d13a54 100644 (file)
@@ -180,9 +180,9 @@ void rxe_drop_all_mcast_groups(struct rxe_qp *qp)
        }
 }
 
-void rxe_mc_cleanup(void *arg)
+void rxe_mc_cleanup(struct rxe_pool_entry *arg)
 {
-       struct rxe_mc_grp *grp = arg;
+       struct rxe_mc_grp *grp = container_of(arg, typeof(*grp), pelem);
        struct rxe_dev *rxe = grp->rxe;
 
        rxe_drop_key(grp);
index d0faca294006f4f53a40ebcf40839f9758b52c09..8ca3acd327b3bd572009ec09298cef7be1324372 100644 (file)
@@ -89,9 +89,9 @@ static void rxe_mem_init(int access, struct rxe_mem *mem)
        mem->map_shift          = ilog2(RXE_BUF_PER_MAP);
 }
 
-void rxe_mem_cleanup(void *arg)
+void rxe_mem_cleanup(struct rxe_pool_entry *arg)
 {
-       struct rxe_mem *mem = arg;
+       struct rxe_mem *mem = container_of(arg, typeof(*mem), pelem);
        int i;
 
        if (mem->umem)
index 7846ccc58b25d954b138777284adeaa931c5e220..47df28e43acf11ce719d9a9301a33d22f9f86a17 100644 (file)
@@ -57,10 +57,12 @@ enum rxe_elem_type {
        RXE_NUM_TYPES,          /* keep me last */
 };
 
+struct rxe_pool_entry;
+
 struct rxe_type_info {
        const char              *name;
        size_t                  size;
-       void                    (*cleanup)(void *obj);
+       void                    (*cleanup)(struct rxe_pool_entry *obj);
        enum rxe_pool_flags     flags;
        u32                     max_index;
        u32                     min_index;
@@ -91,7 +93,7 @@ struct rxe_pool {
        spinlock_t              pool_lock; /* pool spinlock */
        size_t                  elem_size;
        struct kref             ref_cnt;
-       void                    (*cleanup)(void *obj);
+       void                    (*cleanup)(struct rxe_pool_entry *obj);
        enum rxe_pool_state     state;
        enum rxe_pool_flags     flags;
        enum rxe_elem_type      type;
index 486d576e55bc016dda1f8ddad6b8f00941f66727..917147ce4cf968c8b6d286fe7eaedb3f7a5d3cc2 100644 (file)
@@ -825,9 +825,9 @@ void rxe_qp_destroy(struct rxe_qp *qp)
 }
 
 /* called when the last reference to the qp is dropped */
-void rxe_qp_cleanup(void *arg)
+void rxe_qp_cleanup(struct rxe_pool_entry *arg)
 {
-       struct rxe_qp *qp = arg;
+       struct rxe_qp *qp = container_of(arg, typeof(*qp), pelem);
 
        rxe_drop_all_mcast_groups(qp);
 
index cac1d52a08f0066521d925a8f696cd8542dde148..536974b69ed94e6becbbe272b1365638e3309265 100644 (file)
@@ -475,6 +475,6 @@ static inline struct rxe_mem *to_rmw(struct ib_mw *mw)
 int rxe_register_device(struct rxe_dev *rxe);
 int rxe_unregister_device(struct rxe_dev *rxe);
 
-void rxe_mc_cleanup(void *arg);
+void rxe_mc_cleanup(struct rxe_pool_entry *arg);
 
 #endif /* RXE_VERBS_H */