On 14/01/14 20:39, Zoltan Kiss wrote:
@@ -1677,6 +1793,31 @@ static void xenvif_idx_release(struct xenvif *vif, u16 
pending_idx,
        vif->mmap_pages[pending_idx] = NULL;
  }

+void xenvif_idx_unmap(struct xenvif *vif, u16 pending_idx)
+{
+       int ret;
+       struct gnttab_unmap_grant_ref tx_unmap_op;
+
+       if (vif->grant_tx_handle[pending_idx] == NETBACK_INVALID_HANDLE) {
+               netdev_err(vif->dev,
+                          "Trying to unmap invalid handle! pending_idx: %x\n",
+                          pending_idx);
+               return;
+       }
+       gnttab_set_unmap_op(&tx_unmap_op,
+                           idx_to_kaddr(vif, pending_idx),
+                           GNTMAP_host_map,
+                           vif->grant_tx_handle[pending_idx]);
+       ret = gnttab_unmap_refs(&tx_unmap_op,
+                               &vif->mmap_pages[pending_idx],
+                               1);
+
+       ret = HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref,
+                                       &tx_unmap_op,
+                                       1);
+       BUG_ON(ret);
+       vif->grant_tx_handle[pending_idx] = NETBACK_INVALID_HANDLE;
+}

Awkward mistake, I forgot to delete the hypercall ... Even more interesting, it caused troubles only very rarely ...

Zoli
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to