From: Mike Christie Date: Wed, 22 Feb 2006 08:11:59 +0000 (-0600) Subject: [SCSI] don't call ips_eh_reset in ips_queue to avoid deadlock X-Git-Tag: v2.6.17-rc1~1129^2~4^2~117 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba3af0aff042caa1f41b5f7164cab37c717b8811;p=linux-2.6 [SCSI] don't call ips_eh_reset in ips_queue to avoid deadlock When the locking was changed in the eh code ips_eh_reset was changed so that it was a wraper around __ips_eh_reset and all ips_eh_reset does is grab the host lock and then calls __ips_eh_reset. In the queuecommand, ips_queue is called with the host_lock held so if it calls ips_eh_reset we will have a problem. This patch just has ips_queue call __ips_eh_reset. Patch is only compile tested. I do not have the HW. Signed-off-by: Mike Christie Acked-by: Hammer, Jack Signed-off-by: James Bottomley --- diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index 86c546164d..481708d527 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c @@ -1146,7 +1146,7 @@ ips_queue(Scsi_Cmnd * SC, void (*done) (Scsi_Cmnd *)) return (0); } ha->ioctl_reset = 1; /* This reset request is from an IOCTL */ - ips_eh_reset(SC); + __ips_eh_reset(SC); SC->result = DID_OK << 16; SC->scsi_done(SC); return (0);