On Apr 21, 2008, at 8:42 PM, Yinghai Lu wrote:
bisected to: yhlu@mpk12-office-77-185:~/xx/xx/kernel/linux-2.6> git-bisect good e6990c6448ca9359b6d4ad027c0a6efbf4379e64 is first bad commit commit e6990c6448ca9359b6d4ad027c0a6efbf4379e64 Author: Mark Salyzyn <Mark_Salyzyn@xxxxxxxxxxx> Date: Mon Apr 14 14:20:16 2008 -0400 [SCSI] aacraid: Fix down_interruptible() to check the return value Instead of ignoring the return value in aac_fib_send() return 2 toindicate to the layers above that fib transmission was aborted due totimeout. Signed-off-by: Mark Salyzyn <aacraid@xxxxxxxxxxx>Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx >:040000 040000 2f23bf33d76d6f37c558251003f88537c6e639fe 63d59091ca7ac527b5106540eea06d7b6649862d M drivers
The return value for down_interruptible was incorrectly checked! updated patch enclosed.
This attached patch is against current scsi-misc-2.6 (minus original down_interruptible patch).
ObligatoryDisclaimer: Please accept my condolences regarding Outlook's handling of patch attachments (inline gets damaged, please use attachment).
Signed-off-by: Mark Salyzyn <aacraid@xxxxxxxxxxx> drivers/scsi/aacraid/commsup.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)diff -ru a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/ commsup.c
--- a/drivers/scsi/aacraid/commsup.c 2008-04-14 14:08:00.737201138 -0400 +++ b/drivers/scsi/aacraid/commsup.c 2008-04-14 14:09:34.019252960 -0400 @@ -515,10 +515,12 @@ } udelay(5); } - } else - (void)down_interruptible(&fibptr->event_wait); + } else if (down_interruptible(&fibptr->event_wait)) { + fibptr->done = 2; + up(&fibptr->event_wait); + } spin_lock_irqsave(&fibptr->event_lock, flags); - if (fibptr->done == 0) { + if ((fibptr->done == 0) || (fibptr->done == 2)) { fibptr->done = 2; /* Tell interrupt we aborted */ spin_unlock_irqrestore(&fibptr->event_lock, flags); return -EINTR; Sincerely - Mark Salyzyn
Attachment:
aacraid_down_interruptible2.patch
Description: Binary data