Commit d916a8f1 authored by Ishai Rabinovitz's avatar Ishai Rabinovitz Committed by Roland Dreier

IB/srp: Fix crash in srp_reconnect_target

Protect against srp_reset_device() clearing the req_queue while
srp_reconnect_target() is in progress (note that state change at
the top of srp_reconnect_target() is not sufficient for this since
srp_reset_device() ignores the state).
Signed-off-by: default avatarIshai Rabinovitz <ishai@mellanox.co.il>
Signed-off-by: default avatarMichael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 75df23e2
...@@ -526,8 +526,10 @@ static int srp_reconnect_target(struct srp_target_port *target) ...@@ -526,8 +526,10 @@ static int srp_reconnect_target(struct srp_target_port *target)
while (ib_poll_cq(target->cq, 1, &wc) > 0) while (ib_poll_cq(target->cq, 1, &wc) > 0)
; /* nothing */ ; /* nothing */
spin_lock_irq(target->scsi_host->host_lock);
list_for_each_entry_safe(req, tmp, &target->req_queue, list) list_for_each_entry_safe(req, tmp, &target->req_queue, list)
srp_reset_req(target, req); srp_reset_req(target, req);
spin_unlock_irq(target->scsi_host->host_lock);
target->rx_head = 0; target->rx_head = 0;
target->tx_head = 0; target->tx_head = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment