# HG changeset patch # User gingold@virtu10 # Node ID ee4aef404bce05efa3570bc39cd8c9130e10c37b # Parent bef360142b62e969a34087bac3e0a658a4c7b3bd Bug fix: correctly set length of multicall if !auto_translated. Signed-off-by: Tristan Gingold diff -r bef360142b62 -r ee4aef404bce linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c --- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c Mon Aug 14 14:21:21 2006 -0600 +++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c Fri Aug 18 14:00:37 2006 +0200 @@ -1220,13 +1220,20 @@ err: /* Do all the remapping work, and M2P updates, in one big hypercall. */ if (likely(pages_done)) { - mcl = np->rx_mcl + pages_done; + unsigned int mcl_off; + + if (!xen_feature(XENFEAT_auto_translated_physmap)) + mcl_off = pages_done; + else + mcl_off = 0; + + mcl = np->rx_mcl + mcl_off; mcl->op = __HYPERVISOR_mmu_update; mcl->args[0] = (unsigned long)np->rx_mmu; mcl->args[1] = pages_done; mcl->args[2] = 0; mcl->args[3] = DOMID_SELF; - (void)HYPERVISOR_multicall(np->rx_mcl, pages_done + 1); + (void)HYPERVISOR_multicall(np->rx_mcl, mcl_off + 1); } while ((skb = __skb_dequeue(&errq)))