aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorMike Marciniszyn <mike.marciniszyn@intel.com>2012-07-06 14:29:45 -0400
committerRoland Dreier <roland@purestorage.com>2012-07-10 13:01:56 -0400
commit7e23017704172cb6508cb365eb2cae7335e5da71 (patch)
treefbe042dd007c6c87633864efae20bbac3ddc7aa1 /drivers/infiniband
parent8aac4cc3a9d7d7c2f203b7a8db521b604cfb5dc9 (diff)
IB/qib: Fix sparse RCU warnings in qib_keys.c
Commit 8aac4cc3a9d7 ("IB/qib: RCU locking for MR validation") introduced new sparse warnings in qib_keys.c. Acked-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/qib/qib_keys.c4
-rw-r--r--drivers/infiniband/hw/qib/qib_verbs.h4
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/qib/qib_keys.c b/drivers/infiniband/hw/qib/qib_keys.c
index 970165b027f7..e9486c74c226 100644
--- a/drivers/infiniband/hw/qib/qib_keys.c
+++ b/drivers/infiniband/hw/qib/qib_keys.c
@@ -349,7 +349,9 @@ int qib_fast_reg_mr(struct qib_qp *qp, struct ib_send_wr *wr)
349 if (pd->user || rkey == 0) 349 if (pd->user || rkey == 0)
350 goto bail; 350 goto bail;
351 351
352 mr = rkt->table[(rkey >> (32 - ib_qib_lkey_table_size))]; 352 mr = rcu_dereference_protected(
353 rkt->table[(rkey >> (32 - ib_qib_lkey_table_size))],
354 lockdep_is_held(&rkt->lock));
353 if (unlikely(mr == NULL || qp->ibqp.pd != mr->pd)) 355 if (unlikely(mr == NULL || qp->ibqp.pd != mr->pd))
354 goto bail; 356 goto bail;
355 357
diff --git a/drivers/infiniband/hw/qib/qib_verbs.h b/drivers/infiniband/hw/qib/qib_verbs.h
index 85751fd74371..1293133f28cb 100644
--- a/drivers/infiniband/hw/qib/qib_verbs.h
+++ b/drivers/infiniband/hw/qib/qib_verbs.h
@@ -650,7 +650,7 @@ struct qib_lkey_table {
650 u32 next; /* next unused index (speeds search) */ 650 u32 next; /* next unused index (speeds search) */
651 u32 gen; /* generation count */ 651 u32 gen; /* generation count */
652 u32 max; /* size of the table */ 652 u32 max; /* size of the table */
653 struct qib_mregion **table; 653 struct qib_mregion __rcu **table;
654}; 654};
655 655
656struct qib_opcode_stats { 656struct qib_opcode_stats {
@@ -732,7 +732,7 @@ struct qib_ibdev {
732 struct list_head pending_mmaps; 732 struct list_head pending_mmaps;
733 spinlock_t mmap_offset_lock; /* protect mmap_offset */ 733 spinlock_t mmap_offset_lock; /* protect mmap_offset */
734 u32 mmap_offset; 734 u32 mmap_offset;
735 struct qib_mregion *dma_mr; 735 struct qib_mregion __rcu *dma_mr;
736 736
737 /* QP numbers are shared by all IB ports */ 737 /* QP numbers are shared by all IB ports */
738 struct qib_qpn_table qpn_table; 738 struct qib_qpn_table qpn_table;