From 9fefaba36fbf591755a979514a857d5d807ae53d Mon Sep 17 00:00:00 2001 From: "Moore, Eric" Date: Tue, 17 Jan 2006 17:06:29 -0700 Subject: [PATCH] --- yaml --- r: 19143 b: refs/heads/master c: 2254c86db124a37057116ad20a8de7b8483b6f44 h: refs/heads/master i: 19141: 39cf109eaea16d5a22c243fdf97f1fcfe65dcc4a 19139: 6cb4579185e781d2ec96298be7d8b7d83314ad22 19135: d7a9515e56284a81267285843b95915e7db8e3e1 v: v3 --- [refs] | 2 +- trunk/drivers/message/fusion/mptscsih.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 7985c4b2cd30..ac034298b90b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a69ac3248513ff0fbbdd8f316136036b3b8067a9 +refs/heads/master: 2254c86db124a37057116ad20a8de7b8483b6f44 diff --git a/trunk/drivers/message/fusion/mptscsih.c b/trunk/drivers/message/fusion/mptscsih.c index 2e1c9ff4b028..05789e505464 100644 --- a/trunk/drivers/message/fusion/mptscsih.c +++ b/trunk/drivers/message/fusion/mptscsih.c @@ -560,11 +560,24 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr) MPT_SCSI_HOST *hd; SCSIIORequest_t *pScsiReq; SCSIIOReply_t *pScsiReply; - u16 req_idx; + u16 req_idx, req_idx_MR; hd = (MPT_SCSI_HOST *) ioc->sh->hostdata; req_idx = le16_to_cpu(mf->u.frame.hwhdr.msgctxu.fld.req_idx); + req_idx_MR = (mr != NULL) ? + le16_to_cpu(mr->u.frame.hwhdr.msgctxu.fld.req_idx) : req_idx; + if ((req_idx != req_idx_MR) || + (mf->u.frame.linkage.arg1 == 0xdeadbeaf)) { + printk(MYIOC_s_ERR_FMT "Received a mf that was already freed\n", + ioc->name); + printk (MYIOC_s_ERR_FMT + "req_idx=%x req_idx_MR=%x mf=%p mr=%p sc=%p\n", + ioc->name, req_idx, req_idx_MR, mf, mr, + hd->ScsiLookup[req_idx_MR]); + return 0; + } + sc = hd->ScsiLookup[req_idx]; if (sc == NULL) { MPIHeader_t *hdr = (MPIHeader_t *)mf;