Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5e2f22d39ec29c33bc5a3a558ac545b952aab8b7
Commit:     5e2f22d39ec29c33bc5a3a558ac545b952aab8b7
Parent:     cbccc207128e8bbdb047f6c5fc261acf207749c1
Author:     James Bottomley <[EMAIL PROTECTED]>
AuthorDate: Tue Feb 12 15:55:48 2008 -0600
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Mon Feb 18 08:57:17 2008 -0600

    [SCSI] aic7xx: mitigate HOST_MSG_LOOP invalid SCB ff panic
    
    The panic occurs if we get a MSGIN or MSGOUT for an unidentified SCB
    (meaning we didn't identify the outstanding command it was for).  For
    MSGIN this is wrong because it could be an unsolicited negotiation
    MSGIN from the target.
    
    Still panic on unsolicited MSGOUT because this would represent a
    mistake in the negotiation phases.  However, we should fix this as
    well.  The specs say we should go to bus free for unexpected msgin.
    
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/aic7xxx/aic7xxx_core.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/scsi/aic7xxx/aic7xxx_core.c 
b/drivers/scsi/aic7xxx/aic7xxx_core.c
index 6d2ae64..64e62ce 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_core.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_core.c
@@ -695,15 +695,16 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat)
                        scb_index = ahc_inb(ahc, SCB_TAG);
                        scb = ahc_lookup_scb(ahc, scb_index);
                        if (devinfo.role == ROLE_INITIATOR) {
-                               if (scb == NULL)
-                                       panic("HOST_MSG_LOOP with "
-                                             "invalid SCB %x\n", scb_index);
+                               if (bus_phase == P_MESGOUT) {
+                                       if (scb == NULL)
+                                               panic("HOST_MSG_LOOP with "
+                                                     "invalid SCB %x\n",
+                                                     scb_index);
 
-                               if (bus_phase == P_MESGOUT)
                                        ahc_setup_initiator_msgout(ahc,
                                                                   &devinfo,
                                                                   scb);
-                               else {
+                               } else {
                                        ahc->msg_type =
                                            MSG_TYPE_INITIATOR_MSGIN;
                                        ahc->msgin_index = 0;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to