[openib-general] [PATCH] mthca: mthca_map_cmd off by one
Roland Dreier
rolandd at cisco.com
Mon Sep 26 09:34:37 PDT 2005
Yes, good catch, but I think the fix is not quite right. When we fill
up the table, we'll set nent = 0, and then do ++nent at the end of the
loop. So the second time around we'll start with nent = 1.
Something like this is better, right?
--- linux-kernel/infiniband/hw/mthca/mthca_cmd.c (revision 3544)
+++ linux-kernel/infiniband/hw/mthca/mthca_cmd.c (working copy)
@@ -605,7 +605,7 @@ static int mthca_map_cmd(struct mthca_de
err = -EINVAL;
goto out;
}
- for (i = 0; i < mthca_icm_size(&iter) / (1 << lg); ++i, ++nent) {
+ for (i = 0; i < mthca_icm_size(&iter) / (1 << lg); ++i) {
if (virt != -1) {
pages[nent * 2] = cpu_to_be64(virt);
virt += 1 << lg;
@@ -616,7 +616,7 @@ static int mthca_map_cmd(struct mthca_de
ts += 1 << (lg - 10);
++tc;
- if (nent == MTHCA_MAILBOX_SIZE / 16) {
+ if (++nent == MTHCA_MAILBOX_SIZE / 16) {
err = mthca_cmd(dev, mailbox->dma, nent, 0, op,
CMD_TIME_CLASS_B, status);
if (err || *status)
More information about the general
mailing list