summaryrefslogtreecommitdiff
path: root/sys/dev/isp/isp_sbus.c
diff options
context:
space:
mode:
authorMatt Jacob <mjacob@FreeBSD.org>2010-02-03 21:09:32 +0000
committerMatt Jacob <mjacob@FreeBSD.org>2010-02-03 21:09:32 +0000
commitc8b8a2c4e6ee8692a7eeff8a75511ad52835be75 (patch)
treefdde0434a01b70cd56bc51a41aa3aaccfc6b07f8 /sys/dev/isp/isp_sbus.c
parent7121df6349476d73276d4e51b4de6774cad003ca (diff)
Notes
Diffstat (limited to 'sys/dev/isp/isp_sbus.c')
-rw-r--r--sys/dev/isp/isp_sbus.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/isp/isp_sbus.c b/sys/dev/isp/isp_sbus.c
index a50d0f20ed86..e2dd78fed96f 100644
--- a/sys/dev/isp/isp_sbus.c
+++ b/sys/dev/isp/isp_sbus.c
@@ -455,13 +455,17 @@ isp_sbus_mbxdma(ispsoftc_t *isp)
return (1);
}
- len = sizeof (XS_T **) * isp->isp_maxcmds;
- isp->isp_xflist = (XS_T **) malloc(len, M_DEVBUF, M_WAITOK | M_ZERO);
+ len = sizeof (isp_hdl_t *) * isp->isp_maxcmds;
+ isp->isp_xflist = (isp_hdl_t *) malloc(len, M_DEVBUF, M_WAITOK | M_ZERO);
if (isp->isp_xflist == NULL) {
isp_prt(isp, ISP_LOGERR, "cannot alloc xflist array");
ISP_LOCK(isp);
return (1);
}
+ for (len = 0; len < isp->isp_maxcmds - 1; len++) {
+ isp->isp_xflist[len].cmd = &isp->isp_xflist[len+1];
+ }
+ isp->isp_xffree = isp->isp_xflist;
len = sizeof (bus_dmamap_t) * isp->isp_maxcmds;
if (isp_dma_tag_create(BUS_DMA_ROOTARG(ISP_SBD(isp)), 1,