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: Ishai Rabinovitz <ishai@mellanox.co.il> Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
Родитель
75df23e229
Коммит
d916a8f1b4
|
@ -526,8 +526,10 @@ static int srp_reconnect_target(struct srp_target_port *target)
|
|||
while (ib_poll_cq(target->cq, 1, &wc) > 0)
|
||||
; /* nothing */
|
||||
|
||||
spin_lock_irq(target->scsi_host->host_lock);
|
||||
list_for_each_entry_safe(req, tmp, &target->req_queue, list)
|
||||
srp_reset_req(target, req);
|
||||
spin_unlock_irq(target->scsi_host->host_lock);
|
||||
|
||||
target->rx_head = 0;
|
||||
target->tx_head = 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче