diff options
Diffstat (limited to 'drivers/xen/privcmd-buf.c')
| -rw-r--r-- | drivers/xen/privcmd-buf.c | 22 | 
1 files changed, 4 insertions, 18 deletions
| diff --git a/drivers/xen/privcmd-buf.c b/drivers/xen/privcmd-buf.c index df1ed37c3269..de01a6d0059d 100644 --- a/drivers/xen/privcmd-buf.c +++ b/drivers/xen/privcmd-buf.c @@ -21,15 +21,9 @@  MODULE_LICENSE("GPL"); -static unsigned int limit = 64; -module_param(limit, uint, 0644); -MODULE_PARM_DESC(limit, "Maximum number of pages that may be allocated by " -			"the privcmd-buf device per open file"); -  struct privcmd_buf_private {  	struct mutex lock;  	struct list_head list; -	unsigned int allocated;  };  struct privcmd_buf_vma_private { @@ -60,13 +54,10 @@ static void privcmd_buf_vmapriv_free(struct privcmd_buf_vma_private *vma_priv)  {  	unsigned int i; -	vma_priv->file_priv->allocated -= vma_priv->n_pages; -  	list_del(&vma_priv->list);  	for (i = 0; i < vma_priv->n_pages; i++) -		if (vma_priv->pages[i]) -			__free_page(vma_priv->pages[i]); +		__free_page(vma_priv->pages[i]);  	kfree(vma_priv);  } @@ -146,8 +137,7 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)  	unsigned int i;  	int ret = 0; -	if (!(vma->vm_flags & VM_SHARED) || count > limit || -	    file_priv->allocated + count > limit) +	if (!(vma->vm_flags & VM_SHARED))  		return -EINVAL;  	vma_priv = kzalloc(sizeof(*vma_priv) + count * sizeof(void *), @@ -155,19 +145,15 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)  	if (!vma_priv)  		return -ENOMEM; -	vma_priv->n_pages = count; -	count = 0; -	for (i = 0; i < vma_priv->n_pages; i++) { +	for (i = 0; i < count; i++) {  		vma_priv->pages[i] = alloc_page(GFP_KERNEL | __GFP_ZERO);  		if (!vma_priv->pages[i])  			break; -		count++; +		vma_priv->n_pages++;  	}  	mutex_lock(&file_priv->lock); -	file_priv->allocated += count; -  	vma_priv->file_priv = file_priv;  	vma_priv->users = 1; | 
