]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
ibmvscsi: Abort init sequence during error recovery
authorBrian King <brking@linux.vnet.ibm.com>
Fri, 23 May 2014 15:52:10 +0000 (10:52 -0500)
committerChristoph Hellwig <hch@lst.de>
Wed, 25 Jun 2014 11:29:32 +0000 (13:29 +0200)
If a CRQ reset is triggered for some reason while in the middle
of performing VSCSI adapter initialization, we don't want to
call the done function for the initialization MAD commands as
this will only result in two threads attempting initialization
at the same time, resulting in failures.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Acked-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Cc: stable@vger.kernel.org
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/ibmvscsi/ibmvscsi.c

index 2ebfb2bb0f425f78975ac2c678c9130834d500b0..9caf9a9796594010883e1a078c0bfbc2d399937c 100644 (file)
@@ -797,7 +797,8 @@ static void purge_requests(struct ibmvscsi_host_data *hostdata, int error_code)
                                       evt->hostdata->dev);
                        if (evt->cmnd_done)
                                evt->cmnd_done(evt->cmnd);
-               } else if (evt->done)
+               } else if (evt->done && evt->crq.format != VIOSRP_MAD_FORMAT &&
+                          evt->iu.srp.login_req.opcode != SRP_LOGIN_REQ)
                        evt->done(evt);
                free_event_struct(&evt->hostdata->pool, evt);
                spin_lock_irqsave(hostdata->host->host_lock, flags);