diff options
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
| -rw-r--r-- | drivers/net/xen-netback/interface.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index 870f1fa58370..fff8cddfed81 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -34,6 +34,7 @@  #include <linux/ethtool.h>  #include <linux/rtnetlink.h>  #include <linux/if_vlan.h> +#include <linux/vmalloc.h>  #include <xen/events.h>  #include <asm/xen/hypercall.h> @@ -307,6 +308,15 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid,  	SET_NETDEV_DEV(dev, parent);  	vif = netdev_priv(dev); + +	vif->grant_copy_op = vmalloc(sizeof(struct gnttab_copy) * +				     MAX_GRANT_COPY_OPS); +	if (vif->grant_copy_op == NULL) { +		pr_warn("Could not allocate grant copy space for %s\n", name); +		free_netdev(dev); +		return ERR_PTR(-ENOMEM); +	} +  	vif->domid  = domid;  	vif->handle = handle;  	vif->can_sg = 1; @@ -487,6 +497,7 @@ void xenvif_free(struct xenvif *vif)  	unregister_netdev(vif->dev); +	vfree(vif->grant_copy_op);  	free_netdev(vif->dev);  	module_put(THIS_MODULE);  |