diff options
author | Mike Marciniszyn <mike.marciniszyn@intel.com> | 2012-07-06 14:29:45 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2012-07-10 13:01:56 -0400 |
commit | 7e23017704172cb6508cb365eb2cae7335e5da71 (patch) | |
tree | fbe042dd007c6c87633864efae20bbac3ddc7aa1 /drivers/infiniband | |
parent | 8aac4cc3a9d7d7c2f203b7a8db521b604cfb5dc9 (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.c | 4 | ||||
-rw-r--r-- | drivers/infiniband/hw/qib/qib_verbs.h | 4 |
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 | ||
656 | struct qib_opcode_stats { | 656 | struct 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; |