aboutsummaryrefslogtreecommitdiff
path: root/drivers/infiniband/hw/hfi1
diff options
context:
space:
mode:
authorGravatar Ingo Molnar <mingo@kernel.org> 2020-03-08 09:57:58 +0100
committerGravatar Ingo Molnar <mingo@kernel.org> 2020-03-08 09:57:58 +0100
commit6120681bdf1a1c648e8c555704b71e04abe2e899 (patch)
treea8a3f55c4ed771dc57082d8af2f8d28ab6e5d341 /drivers/infiniband/hw/hfi1
parentMerge tag 'efi-next' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi... (diff)
parentefi: Add a sanity check to efivar_store_raw() (diff)
downloadlinux-6120681bdf1a1c648e8c555704b71e04abe2e899.tar.gz
linux-6120681bdf1a1c648e8c555704b71e04abe2e899.tar.bz2
linux-6120681bdf1a1c648e8c555704b71e04abe2e899.zip
Merge branch 'efi/urgent' into efi/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/infiniband/hw/hfi1')
-rw-r--r--drivers/infiniband/hw/hfi1/verbs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/hfi1/verbs.c b/drivers/infiniband/hw/hfi1/verbs.c
index 089e201d7550..2f6323ad9c59 100644
--- a/drivers/infiniband/hw/hfi1/verbs.c
+++ b/drivers/infiniband/hw/hfi1/verbs.c
@@ -515,10 +515,11 @@ static inline void hfi1_handle_packet(struct hfi1_packet *packet,
opa_get_lid(packet->dlid, 9B));
if (!mcast)
goto drop;
+ rcu_read_lock();
list_for_each_entry_rcu(p, &mcast->qp_list, list) {
packet->qp = p->qp;
if (hfi1_do_pkey_check(packet))
- goto drop;
+ goto unlock_drop;
spin_lock_irqsave(&packet->qp->r_lock, flags);
packet_handler = qp_ok(packet);
if (likely(packet_handler))
@@ -527,6 +528,7 @@ static inline void hfi1_handle_packet(struct hfi1_packet *packet,
ibp->rvp.n_pkt_drops++;
spin_unlock_irqrestore(&packet->qp->r_lock, flags);
}
+ rcu_read_unlock();
/*
* Notify rvt_multicast_detach() if it is waiting for us
* to finish.