Author: marius
Date: Fri Sep 24 16:40:46 2010
New Revision: 213105
URL: http://svn.freebsd.org/changeset/base/213105

Log:
  Improve r56796; the reply handler actually may remove the request from
  the chain in which case it shouldn't be removed twice.
  Reported by:  Staale Kristoffersen
  
  MFC after:    1 week

Modified:
  head/sys/dev/mpt/mpt.c

Modified: head/sys/dev/mpt/mpt.c
==============================================================================
--- head/sys/dev/mpt/mpt.c      Fri Sep 24 15:12:18 2010        (r213104)
+++ head/sys/dev/mpt/mpt.c      Fri Sep 24 16:40:46 2010        (r213105)
@@ -844,13 +844,14 @@ mpt_complete_request_chain(struct mpt_so
                MSG_REQUEST_HEADER *msg_hdr;
                u_int               cb_index;
 
-               TAILQ_REMOVE(chain, req, links);
                msg_hdr = (MSG_REQUEST_HEADER *)req->req_vbuf;
                ioc_status_frame.Function = msg_hdr->Function;
                ioc_status_frame.MsgContext = msg_hdr->MsgContext;
                cb_index = MPT_CONTEXT_TO_CBI(le32toh(msg_hdr->MsgContext));
                mpt_reply_handlers[cb_index](mpt, req, msg_hdr->MsgContext,
                    &ioc_status_frame);
+               if (mpt_req_on_pending_list(mpt, req) != 0)
+                       TAILQ_REMOVE(chain, req, links);
        }
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to