diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2020-03-28 00:36:17 +0300 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2020-03-28 00:36:17 +0300 |
commit | 06dd3f31cb70035cbd3f507c11fd50e3089aeb81 (patch) | |
tree | 98065919df104fba32191f2464f4193a998cd6a1 /drivers/infiniband/hw/hfi1/verbs.c | |
parent | 82f04bfe2aff428b063eefd234679b2d693228ed (diff) | |
parent | 16fbf79b0f83bc752cee8589279f1ebfe57b3b6e (diff) | |
download | linux-06dd3f31cb70035cbd3f507c11fd50e3089aeb81.tar.xz |
Merge tag 'v5.6-rc7' into devel
Linux 5.6-rc7
Diffstat (limited to 'drivers/infiniband/hw/hfi1/verbs.c')
-rw-r--r-- | drivers/infiniband/hw/hfi1/verbs.c | 4 |
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. |